os.path.join不存在的假路径总是好吗?

时间:2013-12-28 11:47:09

标签: python

假设我想这样做:

os.path.join("THIS_DIR_DOESNT_EXIST", "NEITHER_DOES_THIS_SUBDIR")

这对我来说很有用(Mac OS上的python 2.7),但它是否可以保证始终有效,还是依赖于平台?

如果你想知道为什么我想在世界上做这个,我的用例是加入globs,所以我可以有一个可用于Mac&视窗

3 个答案:

答案 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功能。