跳到内容

os-sep-split (PTH206)

派生自 flake8-use-pathlib linter。

作用

检查对 .split(os.sep) 的使用

为什么这不好?

应该使用标准库中的 pathlib 模块进行路径操作。它提供了一个高级 API,具有对 Path 对象执行常见操作所需的功能。

示例

如果不需要路径的所有部分,则应使用 Path 对象的 nameparent 属性。否则,可以使用 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 上。

参考