首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在windows上与os.path.join混合使用斜杠

在windows上与os.path.join混合使用斜杠
EN

Stack Overflow用户
提问于 2013-05-02 16:31:54
回答 9查看 108.2K关注 0票数 77

我倾向于只使用正斜杠作为路径('/'),python在windows上也很乐意这样做。在对os.path.join的描述中,它说如果你想跨平台,这是正确的方式。但当我使用它时,我得到的是混合斜杠:

代码语言:javascript
运行
复制
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

这是正确的吗?我应该在事后检查并更正它,还是有更好的方法?

谢谢

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

代码语言:javascript
运行
复制
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
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-05-02 16:45:37

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

代码语言:javascript
运行
复制
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。

Windows: as dash-tom-bang状态,显然对于Windows端来说,你确实需要在路径的根目录中包含一个分隔符。否则,您将创建相对路径,而不是绝对路径。

票数 38
EN

Stack Overflow用户

发布于 2013-09-13 08:53:28

您可以在path.join()之后使用.replace()来确保斜杠是正确的:

代码语言:javascript
运行
复制
# .replace() all backslashes with forwardslashes
print os.path.join(a, b, c, d, e).replace("\\","/")

这将给出输出:

代码语言:javascript
运行
复制
c:/myFirstDirectory/mySecondDirectory/myThirdDirectory/myExecutable.exe

正如@sharpcloud建议的那样,最好从输入字符串中删除斜杠,但这是另一种选择。

票数 55
EN

Stack Overflow用户

发布于 2016-11-27 06:59:13

尝试使用abspath (使用python 3)

代码语言:javascript
运行
复制
import os

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


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

输出:

c:\myFirstDirectory\mySecondDirectory\myThirdDirectory\myExecutable.exe

进程已完成,退出代码为0

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16333569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档