跳到内容

os-listdir (PTH208)

派生自 flake8-use-pathlib linter。

作用

检查 os.listdir 的使用。

为什么这不好?

os 提供的底层 API 相比,pathlib 为路径操作提供了更高级的 API。如果可能,使用 pathlibPath.iterdir() 可以提高代码可读性,优于 os.listdir()

示例

p = "."
for d in os.listdir(p):
    ...

if os.listdir(p):
    ...

if "file" in os.listdir(p):
    ...

建议改为

p = Path(".")
for d in p.iterdir():
    ...

if any(p.iterdir()):
    ...

if (p / "file").exists():
    ...

已知问题

虽然使用 pathlib 可以提高代码的可读性和类型安全性,但与直接使用字符串的较低级替代方案相比,它的性能可能会降低,尤其是在旧版本的 Python 上。

参考