Mensaje de error de Python io.UnsupportedOperation: no se puede leer

3 minutos de lectura

Avatar de usuario de Sachin Patil
Sachin Patil

tengo este codigo:

line1 = []
line1.append("xyz ")
line1.append("abc")
line1.append("mno")
    
file = open("File.txt","w")
for i in range(3):
    file.write(line1[i])
    file.write("\n")

for line in file:
    print(line)
file.close()

Pero cuando lo intento, aparece un mensaje de error como:

  File "...", line 18, in <module>
     for line in file:
 
UnsupportedOperation: not readable

¿Por qué? ¿Cómo lo soluciono?

  • Bueno, no le diste permisos de lectura al archivo. Pero es inútil hacer eso aquí ya que el cursor estaría ubicado al final del archivo.

    – Willem Van Onsem

    4 de julio de 2017 a las 9:15

  • Intenté buscar la función pero no funcionó y ¿qué quiere decir con permisos de lectura?

    – Sachin Patil

    4 de julio de 2017 a las 9:19

Avatar de usuario de Sreetam Das
Sreetam Das

Estás abriendo el archivo como "w"que significa escritura.

Usando "w" no podrá leer el archivo. Utilice lo siguiente en su lugar:

file = open("File.txt", "r")

Además, aquí están las otras opciones:

"r"   Opens a file for reading only.
"r+"  Opens a file for both reading and writing.
"rb"  Opens a file for reading only in binary format.
"rb+" Opens a file for both reading and writing in binary format.
"w"   Opens a file for writing only.
"a"   Open for writing. The file is created if it does not exist.
"a+"  Open for reading and writing.  The file is created if it does not exist.

  • ¡He estado regresando cada pocos meses con el mismo error!

    -Savannah Madison

    13 de marzo a las 16:44

Avatar de usuario de Sapnesh Naik
Sapnesh Naik

Usar a+ para abrir un archivo para lectura, escritura y crearlo si no existe.

a+ Abre un archivo para agregarlo y leerlo. El puntero del archivo se encuentra al final del archivo, si el archivo existe. El archivo se abre en el modo de adición. Si el archivo no existe, crea un nuevo archivo para lectura y escritura. –Modos de archivo Python

with open('"File.txt', 'a+') as file:
    print(file.readlines())
    file.write("test")

Nota: abrir archivo en un with block se asegura de que el archivo se cierre correctamente al final del bloque, incluso si se genera una excepción en el camino. es equivalente a try-finallypero mucho más corto.

avatar de usuario de omri_saadon
omri_saadon

Hay pocos modos para abrir archivos (leer, escribir, etc.)

Si desea leer desde el archivo, debe escribir file = open("File.txt","r")si escribe que file = open("File.txt","w"). Debe otorgar el permiso correcto con respecto a su uso.

más modos:

  • R. Abre un archivo de solo lectura.
  • rb. Abre un archivo para lectura solo en formato binario.
  • r+ Abre un archivo para lectura y escritura.
  • rb+ Abre un archivo para lectura y escritura en formato binario.
  • w. Abre un archivo solo para escritura.
  • puedes encontrar más modos aquí

Esto le permitirá leer, escribir y crear el archivo si no existe:

f = open('filename.txt','a+')
f = open('filename.txt','r+')

Comandos de uso frecuente:

f.readline() #Read next line
f.seek(0) #Jump to beginning
f.read(0) #Read all file
f.write('test text') #Write 'test text' to file
f.close() #Close file

Avatar de usuario de Djok
Djok

La mesa de Sreetam Das es bonita pero necesita un poco de actualización según w3schools y mis propias pruebas. No estoy seguro si esto se debe al cambio a Python 3.

“a” – Agregar: se agregará al final del archivo y creará un archivo si el archivo especificado no existe.

“w” – Escribir – sobrescribirá cualquier contenido existente y creará un archivo si el archivo especificado no existe.

“x” – Create – creará un archivo, devuelve un error si el archivo existe.

Habría respondido directamente pero no tengo el representante.

https://www.w3schools.com/python/python_file_write.asp

¿Ha sido útil esta solución?