Pathlib和os.path有什么区别?

4

阅读两个库的官方文档:

os.path

另请参阅 pathlib 模块,该模块提供了高级路径对象。

pathlib

另请参阅 os.path 模块,用于字符串上的低级路径操作。

因此,os.path 用于低级使用,path lib 用于高级使用。但这是什么意思?我不理解此上下文中的低级和高级。

有很多关于 pathlib vs os.path 的例子,例如 Pathlib vs. os.path.join in Python

但在这些例子中,都没有解释低级和高级概念。有没有例子可以解释什么是低级,什么是高级?

低级是否意味着需要将路径作为字符串对象进行操作?


1
os.path是旧的、用于操作路径的函数式方法。另一方面,pathlib是基于最新OOP的方法。它具有更高级的抽象层次(简单来说就是更多的魔法)。 - Klaus D.
@KlausD,如果是这样,为什么os.path没有被弃用并在未来的Python版本中将被删除? - Slava
1
这并不是一种替代方式。请记住,Python 是一种多范式语言,支持许多相反的方法。 - Klaus D.
这个回答解决了你的问题吗?Python中的Pathlib vs. os.path.join - dj antivaxx
1个回答

4

如果你对路径本身感兴趣,使用"pathlib";如果你真正关心所表示的资源,则使用"os.path";在大多数情况下,你都是想要使用“path”来了解或处理资源。

高层次的概念就是“路径作为抽象实体”,低层次的概念就是“路径所表示的资源”。虽然"os.path"也具有路径名操作等功能,但这些功能都是为了让你更好地获取你真正感兴趣的资源。

从"pathlib"文档中可以看到:

如果你以前从未使用过此模块,或者只是不确定哪个类适合你的任务,那么"Path"最可能是你需要的。它会为代码运行的平台实例化一个具体的路径。

纯路径在某些特殊情况下很有用;例如:

如果你想在Unix机器上操作Windows路径(反之亦然)。当在Unix上运行时,不能实例化WindowsPath,但可以实例化PureWindowsPath。

你希望确保你的代码只操作路径,而不是实际访问操作系统。在这种情况下,实例化纯类之一可能很有用,因为这些类根本没有任何访问操作系统的操作。


你能提供一些例子,说明在什么情况下你会更喜欢使用它们吗? - Slava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接