2013-09-28 128 views
11

我面临着一个非常基本的问题,在Python脚本中使用目录路径。当我从Windows资源管理器复制路径时,它使用反斜杠作为导致问题的路径分隔符。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 

有人可以帮我解决这个问题。

+0

正斜线在所有操作系统上都可以理解 - 但windows上的'normpath'确实使用'\\'。我个人觉得使用'path'方法来组合/管理路径是最简单的,然后最后从'\\'替换为'/'以便跨系统保持一致。不知道这是否回答你的Q? – Basic

+4

你可以在这个字符串之前添加一个r,例如,x = r'D:\ testfolder',并且x将是“D:\ testfolder”。在字符串前添加'r'显示该字符串是一个原始字符串。 – Mark

回答

12

Python将字符串中的\t解释为制表符;因此,如您注意到的那样,"D:\testfolder"将使用:e之间的选项卡打印出来。如果你想要一个实际的反斜杠,你需要逃生反斜杠输入它作为\\

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

然而,对于跨平台的兼容性,您应该使用os.path.join。我认为Windows上的Python会自动正确处理正斜杠(/)。

+7

只要使用正斜杠就可以在windows下工作 - 'os.path.join()'显然是最强的解决方案。 –

+9

或者,您可以通过在“r”前加一个[原始字符串](http://docs.python.org/2/reference/lexical_analysis.html#string-literals),以便不会解释转义序列,例如, 'R “d:\ testfolder”'。 –

+2

@AdamRosenfield原始字符串不适用于Windows路径。 https://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-%E2%80%94-backslas-in-windows-filenames/ –

相关问题