102

我认为我无法在这里看到更大的图景;但基本上我不知道你为什么要使用os.path.join而不是普通的字符串连接?

我主要使用VBScript,所以我不明白这个函数的意义。

4

3 回答 3

96

便携的

一次编写文件路径操作,它可以在许多不同的平台上免费工作。分隔字符被抽象掉,使您的工作更轻松。

聪明的

您不再需要担心该目录路径是否有斜杠os.path.join如果需要,将添加它。

清除

Usingos.path.join使其他阅读您的代码的人清楚您正在使用文件路径。人们可以快速浏览代码并发现它本质上是一个文件路径。如果您决定自己构建它,您可能会分散读者发现代码实际问题的注意力:“嗯,一些字符串连接,一个替换。这是文件路径还是什么?啊!他为什么不使用os.path.join?” :)

于 2012-12-19T02:59:27.603 回答
4

将在带有 '\' 的 Windows 和带有 '/' 的 Unix(包括 Mac OS X)上工作。

对于posixpath,这是简单的代码

In [22]: os.path.join??
Type:       function
String Form:<function join at 0x107c28ed8>
File:       /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py
Definition: os.path.join(a, *p)
Source:
def join(a, *p):
    """Join two or more pathname components, inserting '/' as needed.
    If any component is an absolute path, all previous path components
    will be discarded."""
    path = a
    for b in p:
        if b.startswith('/'):
            path = b
        elif path == '' or path.endswith('/'):
            path +=  b
        else:
            path += '/' + b
    return path

没有窗户,但应该有 '\'

于 2012-12-19T01:46:28.870 回答
-1

它独立于操作系统。如果您将路径硬编码为 C:\Whatever,它们将仅适用于 Windows。如果您使用 Unix 标准“/”对它们进行硬编码,它们将仅适用于 Unix。os.path.join 检测它正在运行的操作系统并使用正确的符号连接路径。

于 2012-12-19T02:02:43.303 回答