os-sep-split (PTH206)
派生自 flake8-use-pathlib linter。
作用
检查对 .split(os.sep)
的使用
为什么这不好?
应该使用标准库中的 pathlib
模块进行路径操作。它提供了一个高级 API,具有对 Path
对象执行常见操作所需的功能。
示例
如果不需要路径的所有部分,则应使用 Path
对象的 name
和 parent
属性。否则,可以使用 parts
属性,如最后一个示例所示。
import os
"path/to/file_name.txt".split(os.sep)[-1]
"path/to/file_name.txt".split(os.sep)[-2]
# Iterating over the path parts
if any(part in blocklist for part in "my/file/path".split(os.sep)):
...
建议改为
from pathlib import Path
Path("path/to/file_name.txt").name
Path("path/to/file_name.txt").parent.name
# Iterating over the path parts
if any(part in blocklist for part in Path("my/file/path").parts):
...
已知问题
虽然使用 pathlib
可以提高代码的可读性和类型安全性,但与直接处理字符串相比,它的性能可能较低,尤其是在旧版本的 Python 上。