Python 使用os.path.join和os.sep连接之间的差异

Python 使用os.path.join和os.sep连接之间的差异,python,string,path,operating-system,Python,String,Path,Operating System,我正试图找出是否最好使用: os.path.join(str1, str2) 或: 使用timeit分析我发现,正如预期的那样,连接速度更快: %timeit 'playground' + os.sep + 'Text' 10000000 loops, best of 3: 139 ns per loop %timeit os.path.join('playground', 'Text') 1000000 loops, best of 3: 830 ns per loop 所以我的问题是,

我正试图找出是否最好使用:

os.path.join(str1, str2)
或:

使用
timeit
分析我发现,正如预期的那样,连接速度更快:

%timeit 'playground' + os.sep + 'Text'
10000000 loops, best of 3: 139 ns per loop

%timeit os.path.join('playground', 'Text')
1000000 loops, best of 3: 830 ns per loop
所以我的问题是,既然连接也更短,那么有没有理由使用
os.path.join(()


谢谢

它就在文档中:

os.path.join(路径1[,路径2[,…])

智能地连接一个或多个路径组件。如果任何组件是绝对路径,则连接所有以前的组件(在Windows上,包括以前的驱动器号,如果有)返回值是
path1
和可选的
path2
等的串联,每个非空部分后面都有一个目录分隔符(
os.sep
),最后一个除外。(这意味着空的最后一个部分将生成以分隔符结尾的路径。)请注意,在Windows上,由于每个驱动器都有一个当前目录,
os.path.join(“c:,“foo”)
表示相对于驱动器
c:
c:foo
)上当前目录的路径,而不是
c:\foo

os.path.join
做的更多:

>>> os.path.join("/home/", "/home/foo")
'/home/foo'
>>> "/home/" + os.sep + "/home/foo"
'/home///home/foo'

您永远不会遇到
os.path.join
是程序瓶颈的情况,因此使用它,它的可读性也会更高。

os.path.join
采用多个参数:

import os
os.path.join('a', 'b', 'c')

对于许多路径部分来说,这将变得相当长。

我不建议使用它,如果您知道,您不需要它。
os.path.join
的结果不太可预测,并且引入开销绝对不是“过早优化”但这只是糟糕的编码风格。这不是一个瓶颈,但这些决策的累积是导致现代计算机速度变慢的原因。例如,如果您有一个从
os.path.realpath
获得的路径,并且您知道它的文件名不包含斜杠,
os.sep.join
是更好的选择,因为在大多数情况下都是这样。
import os
os.path.join('a', 'b', 'c')