考虑:
path1 = "c:/fold1/fold2"
list_of_paths = ["c:\\fold1\\fold2","c:\\temp\\temp123"]
if path1 in list_of_paths:
print "found"
我希望if语句返回True
,但它的计算结果为False
,因为它是字符串比较。
如何比较两条路径,而不管它们有正斜杠还是反斜杠?我不希望使用该replace
函数将两个字符串都转换为通用格式。
使用os.path.normpath
转换c:/fold1/fold2
到c:\fold1\fold2
:
>>> path1 = "c:/fold1/fold2"
>>> list_of_paths = ["c:\\fold1\\fold2","c:\\temp\\temp123"]
>>> os.path.normpath(path1)
'c:\\fold1\\fold2'
>>> os.path.normpath(path1) in list_of_paths
True
>>> os.path.normpath(path1) in (os.path.normpath(p) for p in list_of_paths)
True
os.path.normpath(path1) in map(os.path.normpath, list_of_paths)
也可以,但是即使中间有匹配项,它也会建立一个包含整个路径项的列表。(在Python 2.x中)在Windows上,必须使用os.path.normcase
比较路径,因为在Windows上,路径不区分大小写。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句