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')