glob (PTH207)
派生自 flake8-use-pathlib linter。
作用
检查 glob.glob()
和 glob.iglob()
的使用。
为什么这不好?
与 os
和 glob
提供的较低级 API 相比,pathlib
为路径操作提供了一个高级 API。
如果可能,使用 Path
对象方法(例如 Path.glob()
)可以提高可读性,优于其低级对应方法(例如 glob.glob()
)。
请注意,glob.glob()
和 Path.glob()
并非完全等效
glob 模块函数 |
Path.glob() |
|
---|---|---|
隐藏文件 | 默认情况下会排除隐藏文件。 在 Python 3.11+ 上,可以使用 include_hidden 关键字来包含隐藏目录。 |
默认情况下包含隐藏文件。 |
急切性 | glob.iglob() 返回一个惰性迭代器。 在底层,glob.glob() 只是将迭代器转换为列表。 |
Path.glob() 返回一个惰性迭代器。 |
工作目录 | glob.glob() 和 glob.iglob() 接受 root_dir 关键字来设置当前工作目录。 |
Path.rglob() 可用于返回相对路径。 |
Globstar (** ) |
必须将 recursive 标志设置为 True ,** 模式才能匹配任何文件以及零个或多个目录、子目录和符号链接。 |
Path.glob() 中的 ** 模式表示“此目录和所有子目录,递归地”。 换句话说,它启用了递归 globbing。 |
示例
建议改为
已知问题
虽然使用 pathlib
可以提高代码的可读性和类型安全性,但与直接使用字符串的较低级替代方案相比,它的性能可能会降低,尤其是在旧版本的 Python 上。