【问题标题】:Pathlib vs. os.path.join in PythonPython 中的 Pathlib 与 os.path.join
【发布时间】:2021-04-15 16:27:12
【问题描述】:

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

from os import path
path_1 = path.join("home", "test", "test.txt")

我也知道有 Pathlib 库基本上是这样做的:

from pathlib import Path
path_2 = Path("home") / "test" / "test.txt"

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

【问题讨论】:

  • 基本上这两种方法都可以,真的没多大关系。它可能归结为您喜欢什么语法。就我个人而言,我不喜欢将斜杠“滥用”为路径连接运算符,因此我更喜欢 os.path.join,但这实际上只是一个口味问题。
  • 就功能而言,两者都做同样的事情。这主要是您喜欢哪一个的偏好问题。 treyhunner.com/2018/12/why-you-should-be-using-pathlib
  • 你可以像path_2 = Path("home", "test", "test.txt")一样做,忘记斜线

标签: python path os.path pathlib


【解决方案1】:

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

加入路径并没有太大区别,但与os.path 相比,pathlib 的其他路径命令更方便。例如,要获取“stem”(不带扩展名的文件名):

os.path:splitext(basename(path))[0]

路径库:path.stem

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

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

【讨论】:

  • pathlib.path 的一个问题是使用存储桶 gc://s3:// pathlib 会导致前缀减少到 gc:/ 等,因此更好地使用 os.join
  • @skibee 在这种情况下你也可以使用cloudpathlib
  • 感谢@KarolZlot 的提示
猜你喜欢
  • 2013-01-27
  • 1970-01-01
  • 2011-01-26
  • 2011-12-02
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
  • 2011-01-14
  • 2022-06-12
相关资源
最近更新 更多