Python IOError: 文件未打开以进行读取。

23

我在尝试打开Python文件时遇到了一个错误。这是我的代码:

>>> import os.path
>>> os.path.isfile('/path/to/file/t1.txt')
>>> True
>>> myfile = open('/path/to/file/t1.txt','w')
>>> myfile
>>> <open file '/path/to/file/t1.txt', mode 'w' at 0xb77a7338>
>>> myfile.readlines()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: File not open for reading

我也尝试过:

for line in myfile:
    print(line)

我也遇到了同样的错误。有人知道这个错误为什么会发生吗?

2个回答

46

你通过指定模式为'w'来打开文件进行写入操作;相反,打开文件进行读取:

你可以将文件的打开模式设置为读取模式。

open(path, 'r')

'r' 是默认值,可以省略。 如果你需要读写模式,请使用 + 模式:

'r' 是默认值,可以省略。如果您需要同时读取和写入,请使用 + 模式:

open(path, 'w+')

w+ 打开文件进行写入操作(将其截断为0个字节),同时也允许您从中读取。如果使用 r+,它也会被打开以供读写,但不会被截断。

如果要使用像 r+w+ 这样的双模式,您需要熟悉.seek() 方法,因为同时使用读写操作会移动文件中当前位置,您最好在这些操作之间明确地移动当前文件位置。

有关详细信息,请参见open() 函数文档


还要注意,'r'是默认模式,不必显式给出。 - user395760
1
@delnan:我在答案中明确说明了。 - Martijn Pieters
@MartijnPieters:谢谢,那只是一个简单的错误。 - Alireza

1

如果你仔细想一想,这是一个简单的错误。在你的代码中,你正在做:

myfile = open('/path/to/file/t1.txt','w')

这个指定是用于写入的,你需要将其设置为 r,即读取。

myfile = open('/path/to/file/t1.txt','r')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接