Pregunta Python IOError: archivo no abierto para leer


Aparece un error cuando intento abrir un archivo en Python. Aquí está mi código:

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

También probé:

for line in myfile:
    print(line)

y tengo el mismo error. ¿Alguien sabe por qué ocurre este error?


20
2017-11-09 14:04


origen


Respuestas:


Abrió el archivo para escribir especificando el modo como 'w'; abra el archivo para leer en su lugar:

open(path, 'r')

'r' es el valor predeterminado, por lo que se puede omitir. Si necesita leer y escribir, use la + modo:

open(path, 'w+')

w+ abre el archivo para escritura (lo trunca en 0 bytes) pero también le permite leer de él. Si utiliza r+ también está abierto para leer y escribir, pero no se truncará.

Si va a usar un modo dual como r+ o w+, necesitas familiarizarte con el .seek() método también, ya que el uso de las operaciones de lectura y escritura moverá la posición actual en el archivo y lo más probable es que desee mover la posición actual del archivo explícitamente entre tales operaciones.

Ver el documentación del open() función para mas detalles.


40
2017-11-09 14:05



Un simple error si lo piensas bien. En tu código estás haciendo:

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

Lo cual especifica que es para escribir, lo que necesita hacer es configurar esto para r, que es para leer

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

1
2017-11-09 14:10



Preguntas populares