Python Windows路径斜杠

26

我在使用Python脚本中遇到了一个非常基础的问题,即从Windows资源管理器中复制路径时,会使用反斜杠作为路径分隔符,这导致了问题。

>>> x
'D:\testfolder'
>>> print x
D:      estfolder
>>> print os.path.normpath(x)
D:      estfolder
>>> print os.path.abspath(x)
D:\     estfolder
>>> print x.replace('\\','/')
D:      estfolder

有人可以帮我修复这个问题吗?


在所有操作系统上,正斜杠都是可以理解的,但是在Windows上,normpath会使用\\。我个人发现使用path方法来组合/管理路径最容易,然后最后进行一次替换,将\\替换为/以保持系统的一致性。不确定这是否回答了你的问题? - Basic
5
例如,您可以在此字符串前添加一个 r,如 x = r'D:\testfolder',那么 x 就会是 "D:\testfolder"。在字符串前添加 'r' 表示该字符串是原始字符串。 - Mark
1个回答

24

Python将字符串中的\t解释为制表符;因此,"D:\testfolder"将在:e之间打印出一个制表符,正如您所注意到的那样。如果您想要一个实际的反斜杠,您需要通过输入\\来进行转义

>>> x = "D:\\testfolder"
>>> print x
D:\testfolder

然而,为了跨平台兼容性,你可能应该使用os.path.join。我认为Python在Windows上也会正确地处理正斜杠(/)。


11
只使用正斜杠在 Windows 下是可行的,但 os.path.join() 显然是最强的解决方案。 - Gareth Latty
31
您可以使用原始字符串字面值,即在字符串前加上'r',这样转义序列就不会被解释,例如r"D:\testfolder" - Adam Rosenfield
4
原文:@AdamRosenfield Raw strings are not suited for windows path. https://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-%E2%80%94-backslashes-in-windows-filenames/翻译:原始字符串不适用于Windows路径。 https://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-%E2%80%94-backslashes-in-windows-filenames/ - Dmitrii Dovgopolyi
1
原始字符串并不总是适用于Windows路径。从链接中可以看到,只要您不以 \ 结尾,原始字符串就能正常工作。或者,如果一致使用os.path.normpath()和os.path.join()的组合,这也将起到作用。 - knickum

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