为了清晰起见,我建议您使用 os.path.sep,因为它是路径分隔符,而不是操作系统分隔符。如果你叫它 import os.path as path,你可以叫它 path.sep,这样更好。

我会使用 os.path.sep来非常清楚地表明它是路径分隔符... 但是一致性更重要,所以如果已经使用了一个,就使用它。否则,选一个,然后一直用。

编辑 : 只是为了确保你没有重造轮子,但是,path模块已经有了 joinsplitdirnamebasename功能... 所以你应该很少需要使用 path.sep:

>>> os.path.join("foo", "bar", "baz")
'foo/bar/baz'
>>> os.path.split(_)
('foo/bar', 'baz')

如果您正在使用 Python 2.7,我建议使用 os.sep(works)而不是 os.path.sep(break) ,因为 Windows 上的 Jython 有一个 bug,返回的是 "/"斜杠而不是所需的 "\"反斜杠。

下面的示例可以突出显示 os.path.join 和 os.path.sep.join 之间的差异。

>>> import os
>>> os.path.join("output", "images", "saved")
'output/images/saved'
>>> os.path.sep.join(["output", "images", "saved"])
'output/images/saved'

我想 os.path.sep.join 更加健壮,可以对任何 OS 进行 w/o 修改。

  1. 正如在 python 文档中提到的,os.path.sepos.sep都返回相同的输出。

操作系统用于分隔路径名的字符 这是“/”用于 POSIX,“”用于 Windows。

  1. 它们也都属于同一个 python 类。

    print(type(os.sep))
    print(type(os.path.sep))
    
    
    # Output
    <class 'str'>
    <class 'str'>
    
  2. 两者都有相同的文档。

    print(os.path.sep.__doc__)
    print(os.sep.__doc__)
    
    
    # The outputs of both print statements are the same.
    

因此,我认为在 Python 2中我们主要使用了 os.sep之后,在 Python 3中只有一致性与它们的使用有关。