我该如何在Python字符串字面量中编写Windows路径?
假设我需要提到一个路径 C:\meshes\as
。如果我直接写成 "C:\meshes\as"
,我会遇到问题——要么出现一些错误,要么这个路径根本就不管用。这是因为 \
被当作转义字符了吗?我应该怎么写这个路径呢?
5 个回答
37
没错,在Python的字符串中,\
表示一个转义序列的开始。在你的路径中,有一个有效的两个字符的转义序列\a
,它被合并成了一个字符,这个字符是ASCII铃声:
>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess
其他常见的转义序列包括\t
(制表符)、\n
(换行符)、\r
(回车符):
>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:\nest')
['C', ':', '\n', 'e', 's', 't']
>>> list('C:\rest')
['C', ':', '\r', 'e', 's', 't']
正如你所看到的,在这些例子中,反斜杠和后面的字符组合在一起,形成了最终字符串中的一个字符。Python的转义序列的完整列表可以在这里找到。
处理这些情况有几种方法:
-
>>> r'C:\meshes\as' 'C:\\meshes\\as' >>> print(r'C:\meshes\as') C:\meshes\as
在Windows上,Python也可以处理正斜杠。
你可以使用
os.path.join
...>>> import os >>> os.path.join('C:', os.sep, 'meshes', 'as') 'C:\\meshes\\as'
...或者使用更新的
pathlib
模块>>> from pathlib import Path >>> Path('C:', '/', 'meshes', 'as') WindowsPath('C:/meshes/as')
46
使用 os.path
模块。
os.path.join( "C:", "meshes", "as" )
或者使用原始字符串。
r"C:\meshes\as"
我还建议路径或文件名中不要有空格。你可以在字符串中使用双反斜杠。
"C:\\meshes\\as.jpg"
415