它们是一样的,但是我应该用哪一个呢?
Http://docs.python.org/library/os.html
os.sep 操作系统用于分隔路径名组件的字符。这是 POSIX 的“/”和 Windows 的“”。注意,了解这一点并不足以解析或连接路径名ーー使用 os.path.spli ()和 os.path.join ()ーー但它偶尔会很有用。也可以通过 os.path 获得。
os.sep
操作系统用于分隔路径名组件的字符。这是 POSIX 的“/”和 Windows 的“”。注意,了解这一点并不足以解析或连接路径名ーー使用 os.path.spli ()和 os.path.join ()ーー但它偶尔会很有用。也可以通过 os.path 获得。
为了清晰起见,我建议您使用 os.path.sep,因为它是路径分隔符,而不是操作系统分隔符。如果你叫它 import os.path as path,你可以叫它 path.sep,这样更好。
os.path.sep
import os.path as path
path.sep
我会使用 os.path.sep来非常清楚地表明它是路径分隔符... 但是一致性更重要,所以如果已经使用了一个,就使用它。否则,选一个,然后一直用。
编辑 : 只是为了确保你没有重造轮子,但是,path模块已经有了 join、 split、 dirname和 basename功能... 所以你应该很少需要使用 path.sep:
path
join
split
dirname
basename
>>> 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 修改。
操作系统用于分隔路径名的字符 这是“/”用于 POSIX,“”用于 Windows。
它们也都属于同一个 python 类。
print(type(os.sep)) print(type(os.path.sep)) # Output <class 'str'> <class 'str'>
两者都有相同的文档。
print(os.path.sep.__doc__) print(os.sep.__doc__) # The outputs of both print statements are the same.
因此,我认为在 Python 2中我们主要使用了 os.sep之后,在 Python 3中只有一致性与它们的使用有关。