在我的python脚本中,我声明了一个文件的路径,如下所示:
input_file = "C:\Path\To\My\File One.csv"
我使用这段代码打开文件:
with open(input_file, 'rb') as csvinput:
print csvinput
当我打开此文件时,它会成功返回:
<open file 'C:\\Path\\To\My\\Folder\\File One.csv', mode 'rb' at 0x02CD37B0>`
但是,当我尝试使用相同的代码块打开时:
input_file = "C:\Path\To\My\Folder\File Two.csv"
我收到以下错误:
IOError: [Errno 22] invalid mode ('rb') or filename: 'C:\\Path\\To\\My\\Folder\File Two.csv'
为什么所有反斜杠都从第一个文件路径转义而不是在第二个文件路径中转义?如果我使用r'input_file = "C:\Path\To\My\Folder\File Two.csv'
,文件将按预期打开。为什么我不必为File One.csv
做同样的事情?我看过这两个文件,但似乎看不出会导致这种情况的任何差异。
答案 0 :(得分:2)
您的问题很可能是使用单个反斜杠,但如果没有实际的文件名,我无法确定。我的猜测是你的第二个文件名的第一个字母是一个有效的转义序列,当与反斜杠结合使用时(例如换行符为\n
),而第一个文件名的第一个字母则不是。
如果python无法识别转义序列,则将其逐字地放入,这就是其他反斜杠很好的原因。字符串转义序列的规则是here。我建议始终使用原始字符串(即字符串文字,如r"C:\My Path\My File.txt"
),或使用双反斜杠。