16
Si intento ejecutar el siguiente códigoarchivo incorrecto
f = file('test','rb')
fout = file('test.out','wb')
for i in range(10):
a = f.read(1)
fout.write(a)
f.close()
f = fout
f.seek(4)
print f.read(4)
Dónde 'test'
es cualquier archivo arbitrario, me sale:
Traceback (most recent call last):
File "testbad.py", line 12, in <module>
print f.read(4)
IOError: [Errno 9] Bad file descriptor
Si sin embargo, cambiar sólo la línea fout utilizar una archivo temporal:
import tempfile
f = file('test','rb')
fout = tempfile.NamedTemporaryFile()
for i in range(10):
a = f.read(1)
fout.write(a)
f.close()
f = fout
f.seek(4)
print f.read(4)
No hay errores. ¿Alguien sabe a que se debe esto? Hubiera esperado que el primer caso funcionara, pero debo estar haciendo algo mal.
¡Gracias de antemano por cualquier ayuda!
No sé si/cuando las cosas cambiaron, pero de acuerdo a los documentos actuales, y mi experiencia personal, ahora tiene que utilizar 'r +' o 'r + b' para abrir una archivo para lectura y escritura https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files – JonoCoetzee
@JonoCoetzee Parece que ambos funcionan de manera equivalente, pero he editado para que sea mejor alineado con los documentos. Gracias. – cobbal