我正在使用 pyton 2.7。我写了一个脚本,当它执行时,它会调用并运行一些名为 abc.py 的其他文件。但我收到错误
IOError: [Errno 22] invalid mode ('r') or filename: 'F:\x07bc.c'
如果我更改文件名,它工作正常。只有当我使用从 a 到 f 的字母作为文件名的第一个字母时,它才会显示错误请帮助。谢谢
我正在使用 pyton 2.7。我写了一个脚本,当它执行时,它会调用并运行一些名为 abc.py 的其他文件。但我收到错误
IOError: [Errno 22] invalid mode ('r') or filename: 'F:\x07bc.c'
如果我更改文件名,它工作正常。只有当我使用从 a 到 f 的字母作为文件名的第一个字母时,它才会显示错误请帮助。谢谢
考虑 Python 字符串'\a'
。如文档中所述,反斜杠字符被解释为转义字符。'\a'
事实上 ASCII Bell 字符也是如此,字符编号 7。
您的文件名是'F:\abc.c'
,并且其中的文件名被\a
解释为 ASCII Bell。您可以在解释器中清楚地看到这一点:
>>> 'F:\abc.c'
'F:\x07bc.c'
>>> print 'F:\abc.c'
F:bc.c
当您打印该字符串时,请注意\a
不会出现。那是因为它变成了一个隐形的铃控角色。
要包含反斜杠,您可以使用正确的转义序列\\
。把它们放在一起,你的文件名应该是:'F:\\abc.c'
. 作为替代方案,您可以为字符串添加前缀r
以使其成为原始字符串。这在文档中也有详细说明。
>>> 'F:\\abc.c'
'F:\\abc.c'
>>> print 'F:\\abc.c'
F:\abc.c
>>> r'F:\abc.c'
'F:\\abc.c'
>>> print r'F:\abc.c'
F:\abc.c
试试这个:
open(r'F:\abc.c')
即r
在引号之前添加。
更新对不起,我误解了代码(尽管我的解决方案是正确的)。@DavidHeffernan 是对的,它\a
被读作 ASCII 钟。
\
用另一个反斜杠转义,如下所示:
print 'F:\\x07bc.c'