我试图找出使用它是否更好:
os.path.join(str1, str2)
或:
str1 + os.sep + 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(()
?
由于
答案 0 :(得分:16)
它就在文档中:
os.path.join(path1[, path2[, ...]])
加入一个或多个路径组件智能。如果任何组件是绝对路径,则抛弃所有先前组件(在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
是你程序的瓶颈的情况,所以使用它,它也更具可读性。
答案 1 :(得分:7)
os.path.join
有多个参数:
import os
os.path.join('a', 'b', 'c')
对于许多路径部分,这将变得相当长。