为什么在字符串连接中使用os.path.join?

时间:2012-12-19 01:44:39

标签: python filepath

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

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

3 个答案:

答案 0 :(得分:61)

便携式

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

智能

您不再需要担心该目录路径是否有trailing slash or not。如果需要,os.path.join会添加。

清除

使用os.path.join使得阅读代码的其他人明白您正在使用文件路径。人们可以快速扫描代码并发现它本质上是一个文件路径。如果你决定自己构建它,你可能会让读者不要发现代码的实际问题:“嗯,一些字符串concats,一个替换。这是一个文件路径还是什么?Gah!为什么他没有使用{{1 }}?” :)

答案 1 :(得分:5)

使用'\'和Unix(包括Mac OS X)使用'/'。

在Windows上运行

对于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

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

答案 2 :(得分:-1)

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