我通常使用" os.path.join()"当我连接路径时,我很少使用" os.sep"。 但我找到了" os.sep"比#os; os.path.join()"更快?
我的测试代码:
import os
import time
a = 'E:\\video'
b = 'image'
c = '0001.jpg'
start = time.clock()
d = os.path.join(a,b,c)
end = time.clock()
print("%f " % (end - start)) #0.000011
print(d) #E:\video\image\0001.jpg
start = time.clock()
e = a+os.sep+b+os.sep+c
end = time.clock()
print("%f " % (end - start)) #0.000001
print(e) #E:\video\image\0001.jpg
结果:
答案 0 :(得分:2)
你可以自己通过reading the source (windows version)回答这个问题 - 甚至只是文件FWIW:
智能地加入一个或多个路径组件。返回值是 路径和*路径的任何成员的串联恰好是一个 除了之外的每个非空部分之后的目录分隔符(os.sep) 最后,意味着结果只会在最后一个分隔符中结束 部分是空的。如果组件是绝对路径,则以前都是 组件被丢弃,加入继续绝对 路径组件。
在Windows上,绝对路径时不会重置驱动器号 遇到组件(例如,r' \ foo')。如果组件包含 驱动器号,所有以前的组件都扔掉了驱动器 信被重置。请注意,因为每个都有一个当前目录 drive,os.path.join(" c:"," foo")表示相对于 驱动器C上的当前目录:(c:foo),而不是c:\ foo。
正如您所看到的,os.path.join()
答案 1 :(得分:0)
根据os.path的python官方文档说:
由于不同的操作系统具有不同的路径名 约定,标准中有这个模块的几个版本 图书馆。 os.path模块始终是适合的路径模块 操作系统Python正在运行,因此可用于本地 路径。
我们可以看到它适用于os独立路径名约定,必须进行额外的检查,比如确定操作系统等,这是os.path.join所需时间的原因(a ,b,c)致电。
另外一个+ os.sep + b + os.sep + c只是一个简单的分隔符,它不执行os.path这样的操作。