Python 中的 Pathlib 与 os.path.join

Ami*_*mir 67 python path os.path pathlib

当我需要在脚本中定义文件系统路径时,我用来os.path.join保证该路径在不同文件系统上保持一致:

from os import path
path_1 = path.join("home", "test", "test.txt")
Run Code Online (Sandbox Code Playgroud)

我也知道有一个Pathlib库基本上做同样的事情:

from pathlib import Path
path_2 = Path("home") / "test" / "test.txt"
Run Code Online (Sandbox Code Playgroud)

这两种处理路径的方法有什么区别?哪一个更好?

wis*_*cky 78

pathlib是自 Python 3.4 以来更现代的方式。pathlib的文档说“对于字符串的低级路径操作,您还可以使用 os.path 模块。”

它对于连接路径没有太大区别,但其他路径命令pathlib相比os.path. 例如,要获取“stem”(不带扩展名的文件名):

操作系统路径:splitext(basename(path))[0]

路径库:path.stem

此外,您也可以使用相同类型的语法(逗号而不是斜杠)来连接路径pathlib

path_2 = Path("home", "test", "test.txt")

  • pathlib.path 的一个问题是使用存储桶 `gc://` 或 `s3://` `pathlib` 会导致前缀减少为 `gc:/` 等,因此最好使用 os.join (16认同)
  • @skibee在这种情况下你也可以使用`cloudpathlib` (15认同)