【发布时间】:2012-12-06 07:59:42
【问题描述】:
我认为我无法在这里看到更大的图景;但基本上我不知道你为什么要使用os.path.join 而不是普通的字符串连接?
我主要使用VBScript,所以我不明白这个函数的意义。
【问题讨论】:
我认为我无法在这里看到更大的图景;但基本上我不知道你为什么要使用os.path.join 而不是普通的字符串连接?
我主要使用VBScript,所以我不明白这个函数的意义。
【问题讨论】:
可以在带有 '\' 的 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
没有windows,但应该有'\'
【讨论】:
/ 可以使用 CPython……
它独立于操作系统。如果您将路径硬编码为 C:\Whatever,它们将仅适用于 Windows。如果您使用 Unix 标准“/”对它们进行硬编码,它们将仅适用于 Unix。 os.path.join 检测它运行的操作系统并使用正确的符号连接路径。
【讨论】:
If you hardcode them with the Unix standard "/" they will only work on Unix. 这是错误的。 "/" 在 windows 和 linux/unix/bsd/darwin 上工作得很好。
编写文件路径操作一次,它可以在许多不同的平台上免费使用。分隔符被抽象掉,让您的工作更轻松。
您不再需要担心该目录路径是否包含trailing slash or not。 os.path.join 会根据需要添加。
使用os.path.join 可以让其他阅读您的代码的人清楚您正在使用文件路径。人们可以快速浏览代码并发现它本质上是一个文件路径。如果您决定自己构建它,您可能会分散读者发现代码实际问题的注意力:“嗯,一些字符串连接,一个替换。这是文件路径还是什么?哎呀!他为什么不使用os.path.join ?” :)
【讨论】:
os.path.join,但如果你这样做,请出于正确的理由这样做。 os.path.join 周围有很多货物崇拜。正如他们所说,“愚蠢的一致性是小人的妖精”。
os.path.join是没有意义的。