Python IOError: файл не открыт для чтения

Я получаю сообщение об ошибке при попытке открыть файл на 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)

и я получил ту же ошибку. Кто-нибудь знает, почему эта ошибка возникает?

Ответы

Ответ 1

Вы открыли файл для записи, указав режим как 'w'; вместо этого откройте файл для чтения:

open(path, 'r')

'r' по умолчанию, поэтому его можно опустить. Если вам нужно читать и писать, используйте режим +:

open(path, 'w+')

w+ открывает файл для записи (обрезает его до 0 байтов), но также позволяет вам прочитать его. Если вы используете r+, он также открыт для чтения и записи, но не будет усечен.

Если вы используете двухрежимный режим, например r+ или w+, вам необходимо ознакомиться с методом .seek(), так как использование операций чтения и записи будет перемещать текущую позицию в файле, и вы, скорее всего, захотите перенести текущую позицию файла между этими операциями.

Подробнее см. документацию функции open().

Ответ 2

Простая ошибка, если вы думаете об этом. В коде, который вы делаете:

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

Определяет, что это для записи, вам нужно установить значение r, которое предназначено для чтения

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