为什么你应该避免将路径表示为字符串,而是使用Pathlib
![在Python中的路径表示 四海 第1张-四海吧 Photo by Matt Duncan on Unsplash](https://miro.medium.com/v2/resize:fit:640/format:webp/1*m17ZhhPk_gV0YzcUbz4_8g.jpeg)
在编程中,与文件系统的操作是最简单的任务之一。令人惊讶的是,我们中的许多人仍然做错了,因为我们倾向于将文件路径表示为字符串。这是根本错误的,也是最常见的反模式之一,你肯定在许多不同的Python代码库中已经见过。
在今天的文章中,我们将讨论为什么使用字符串(甚至是os
模块)来表示文件系统上的路径是一个坏主意。此外,我们将讨论最佳实践,并展示如何在Python中使用pathlib
包来正确编码文件路径。让我们开始吧!
为什么使用字符串来表示路径是一个坏主意
不同的操作系统在表示文件系统上的路径时使用不同的命名约定。例如,Unix使用正斜杠/
作为目录分隔符,而Windows使用反斜杠\
# Unix (例如Linux, OSX等)/home/this/is/a/path/to/a/directory# WindowsC:\home\this\is\a\path\to\a\directory
代码可移植性是一组原则,使源代码能够在多个不同环境中具有相同的行为。因此,使用字符串表示路径将无法实现这一点,除非我们根据源代码运行的操作系统以不同的方式处理路径。
但即使在那种情况下,我们也会使我们的代码混乱和不必要地复杂。
# 这是一种不好的做法import platformif platform.system() == 'Windows': filepath = 'C:\home\this\is\a\path\to\a\directory'else: # 例如OSX的'Darwin'或Linux的'Linux' filepath = '/home/this/is/a/path/to/a/directory'
在表示路径的字符串上进行进一步的操作也会变得更加复杂。假设你想要连接两个路径 – 简单的字符串连接可能会导致无效的路径,特别是如果一个或多个字符串包含特殊字符,如正斜杠或反斜杠。
path_1 = '/this/is/a/path/'path_2 = '/another/path'# filepath = '/this/is/a/path//another/path'filepath = path_1 + path_2