0

我正在使用 pyton 2.7。我写了一个脚本,当它执行时,它会调用并运行一些名为 abc.py 的其他文件。但我收到错误

IOError: [Errno 22] invalid mode ('r') or filename: 'F:\x07bc.c'

如果我更改文件名,它工作正常。只有当我使用从 a 到 f 的字母作为文件名的第一个字母时,它才会显示错误请帮助。谢谢

4

3 回答 3

5

考虑 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
于 2012-11-29T09:39:58.757 回答
1

试试这个:

open(r'F:\abc.c')

r在引号之前添加。

更新对不起,我误解了代码(尽管我的解决方案是正确的)。@DavidHeffernan 是对的,它\a被读作 ASCII 钟。

于 2012-11-29T09:26:11.110 回答
1

\用另一个反斜杠转义,如下所示:

print 'F:\\x07bc.c'
于 2012-11-29T09:27:10.727 回答