跳到内容

os-path-splitext (PTH122)

派生自 flake8-use-pathlib linter。

作用

检查 os.path.splitext 的使用情况。

为什么这不好?

os.path 提供的较低级别的 API 相比,pathlib 为路径操作提供了一个高级 API。如果可能,使用 Path 对象方法(例如 Path.suffixPath.stem)可以提高可读性,优于 os.path 模块的对应方法(例如,os.path.splitext())。

os.path.splitext() 专门返回文件根和扩展名的元组(例如,给定 splitext('/foo/bar.py')os.path.splitext() 返回 ("foo/bar", ".py")。这些输出可以通过 Path.suffix (".py")、Path.stem ("bar") 和 Path.parent ("foo") 的组合来重建。

示例

import os

(root, ext) = os.path.splitext("foo/bar.py")

建议改为

from pathlib import Path

path = Path("foo/bar.py")
root = path.parent / path.stem
ext = path.suffix

已知问题

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

参考