小编典典

在Windows上与os.path.join混合斜杠

python

我倾向于只对路径(’/’)使用正斜杠,而python在Windows上也很满意。在os.path.join的描述中,它说的是跨平台的正确方法。但是当我使用它时,我会得到混合的斜杠:

import os

a = 'c:/'
b = 'myFirstDirectory/'
c = 'mySecondDirectory'
d = 'myThirdDirectory'
e = 'myExecutable.exe'


print os.path.join(a, b, c, d, e)

# Result:
c:/myFirstDirectory/mySecondDirectory\myThirdDirectory\myExecutable.exe

这个对吗?我应该稍后检查并更正它,还是有更好的方法?

谢谢

编辑:询问路径时,我也会得到斜杠

import sys
for item in sys.path:
    print item

# Result:
C:\Program Files\Autodesk\Maya2013.5\bin
C:\Program Files\Autodesk\Maya2013.5\mentalray\scripts\AETemplates
C:\Program Files\Autodesk\Maya2013.5\Python
C:\Program Files\Autodesk\Maya2013.5\Python\lib\site-packages
C:\Program Files\Autodesk\Maya2013.5\bin\python26.zip\lib-tk
C:/Users/nookie/Documents/maya/2013.5-x64/prefs/scripts
C:/Users/nookie/Documents/maya/2013.5-x64/scripts
C:/Users/nookie/Documents/maya/scripts
C:\Program Files\Nuke7.0v4\lib\site-packages
C:\Program Files\Nuke7.0v4/plugins/modules

阅读 213

收藏
2020-12-20

共1个答案

小编典典

现在,您自己提供了一些斜线,让os.path.join其他人选择。最好让python选择所有它们,或者自己提供它们。Python在路径的后半部分使用反斜杠,因为反斜杠是Windows上的默认设置。

import os

a = 'c:' # removed slash
b = 'myFirstDirectory' # removed slash
c = 'mySecondDirectory'
d = 'myThirdDirectory'
e = 'myExecutable.exe'

print os.path.join(a + os.sep, b, c, d, e)

我尚未对此进行测试,但希望对您有所帮助。具有基本路径并且只需要联接另一个元素(通常是文件)是更常见的。

顺便说说;
您可以os.sep在那些时刻想要为运行python的操作系统提供最佳分隔符。

编辑: 如dash-tom-bang所示,显然对于Windows,您确实需要包括路径根的分隔符。否则,您将创建相对路径,而不是绝对路径。

2020-12-20