如何在Python中修复Windows路径中正斜杠问题?

7
我已经用Python和Pyside开发了一个应用程序,并在Linux机器上开发。现在我想在Windows机器上部署它,但问题是路径。在Linux中,正斜杠(/)被用作分隔符,而Windows使用反斜杠(\)作为分隔符。因此,在Windows上并非所有路径都有效。应用程序中有多个路径(用于样式表、图像、日志等),更改所有路径很困难,因为大多数路径都是硬编码的。
 rootPath()+'/static/images/add.png' #rootPath return os.path...

例子:

 colorPickerBtnStyle = 'background:url(' + rootPath() + '/static/images/color_icon.png);background-repeat: no-repeat;background-position:center center;'

有没有解决这个问题的方法?

11
Windows从何时起停止接受路径中的“/”或“\”字符?自DOS以来一直允许它们。 - stark
3
这个示例看起来像是CSS,无论引用的文件是否在本地,你都应该始终使用正斜杠,甚至在Windows上也是如此:http://blogs.msdn.com/b/ie/archive/2006/12/06/file-uris-in-windows.aspx - Thomas
这是在使用qt/pyside的桌面应用程序中使用的CSS。 - anils
1
它在Windows上无法工作可能是因为大小写不敏感,而不是斜杠方向的问题吗? - martineau
“所有路径都无效”不是有用的信息。我真的很难相信。除了在命令提示符中,使用单斜杠/或混合使用/和反斜杠在Windows中应该不会出现路径问题。@Anil1010,你能提供一个例子吗?问题出在哪里?如果可以,请编辑你的问题并包含实际的错误消息和回溯信息。 - John Machin
3个回答

15

os.path.join()函数会在不同的操作系统中使用相应的路径分隔符。


2
是的,当你硬编码东西时,这就是你所要承担的责任 :) - Thomas
通过使用查找和替换并添加函数assetPath解决了问题,该函数返回图像路径和使用os.path.join()构建的路径。谢谢Thomas! - anils
不要使用硬编码路径,使用os.path.join()创建路径。 - anils

13

使用os.sep代替直接写斜杠。


0

或者你可以使用join:

os.sep.join((dir, file))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接