11

我想弄清楚是否更好地使用:

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(()吗?

谢谢

4

2 回答 2

23

它就在文档中:

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程序瓶颈的情况,所以使用它,它也更具可读性。

于 2013-05-28T10:31:03.183 回答
7

os.path.join接受多个参数:

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

随着许多路径部分的连接,这将变得相当长。

于 2013-05-28T10:31:54.963 回答