2015-06-09 101 views
1

我想在IDLE中打开一个txt文件,但它给了我一个错误。 我无法弄清楚我的文件名中f发生了什么,或者为什么单个'\'在错误信息中变成了双精度。在Python 2.7中打开文件的正确方法是什么?

>>>f=open('D:\programs\python 2.7.10\programs\foo.txt','r') 

Traceback (most recent call last): 
    File "<pyshell#94>", line 1, in <module> 
    f=open('D:\programs\python 2.7.10\programs\foo.txt','r') 
IOError: [Errno 22] invalid mode ('r') or filename: 'D:\\programs\\python 2.7.10\\programs\x0coo.txt' 
+2

您需要避开反斜杠(双“\\”)或使用原始字符串语法('r“D:\ ... \ foo.txt”')。 –

回答

8

反斜杠用于转义序列 - 你的情况的罪魁祸首是\f其是换页符。您还可以在现代Windows系统上使用正斜杠以及替代方案。

使用原始字符串:

f=open(r'D:\programs\python 2.7.10\programs\foo.txt','r') 

理想的情况下,虽然,你应该使用with语句,这样,它会自动关闭该文件在例外的情况下,或当与块退出,如:

with open(r'D:\programs\python 2.7.10\programs\foo.txt','r') as f: 
    # do stuff with `f` 
+0

一个毫不相干的问题:我用我的Windows路径转换为使用正斜杠而不是使用原始字符串或加倍反斜杠。然后,通过COM对象驱动的Excel停止允许正斜杠。 (我认为行为在Excel 2010中改变了。)现在我总是在输入路径文字时使用原始字符串。 –

+0

@Steven有趣的知道......谢天谢地,我没有必须每天处理Windows的“快乐” - 但总是很方便地知道这样的事情。谢谢。 –

-2

您的路径中有一个有趣的字符“\ x0c”。它的“f”十六进制。 Python不理解。这就是ASCII给出错误的原因。重命名你的文件更好,你会没事的。

+2

Python确实*理解*它只是它的文件名不存在。这个问题与转义序列有关...... –

+0

也许吧。我从来没有使用Windows和我的文件名是好的。 –

相关问题