假设我想这样做:
os.path.join("THIS_DIR_DOESNT_EXIST", "NEITHER_DOES_THIS_SUBDIR")
这对我来说很有用(Mac OS上的python 2.7),但它是否可以保证始终有效,还是依赖于平台?
如果你想知道为什么我想在世界上做这个,我的用例是加入globs,所以我可以有一个可用于Mac&视窗
答案 0 :(得分:2)
考虑到os.path.join
有助于构造相对路径,并且不执行任何基于绝对或基于currentdir的检查,因此将路径段连接为字符串表示应始终是安全的,无论它们是否指向真实的文件系统与否。
如果路径必须存在,那么对于构建尚未写入的文件和文件夹的路径的用例将毫无用处。
答案 1 :(得分:2)
是的,它在所有平台上的工作方式都相同。
为了证明这一点,让我们查看sources。大多数os.path.join
实现仅使用字符串,并且不解决任何FS函数。
例如,在Posix中:
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)
是的,因为事实上所发生的一切都是字符串连接。如果您想检查路径的有效性,请使用os.path.exists
功能。