Press "Enter" to skip to content

在Python中的路径表示

为什么你应该避免将路径表示为字符串,而是使用Pathlib

Photo by Matt Duncan on Unsplash

在编程中,与文件系统的操作是最简单的任务之一。令人惊讶的是,我们中的许多人仍然做错了,因为我们倾向于将文件路径表示为字符串。这是根本错误的,也是最常见的反模式之一,你肯定在许多不同的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
Leave a Reply

Your email address will not be published. Required fields are marked *