16
Se provo eseguendo il seguente codiceinappropriato di file
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)
Dove 'test'
è un qualsiasi file arbitrario, ottengo:
Traceback (most recent call last):
File "testbad.py", line 12, in <module>
print f.read(4)
IOError: [Errno 9] Bad file descriptor
Se, tuttavia, posso cambiare solo la linea fout di utilizzare un file temporaneo:
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)
Non ci sono errori. qualcuno sà perche è cosi? Mi sarei aspettato che il primo caso funzionasse, ma devo fare qualcosa di sbagliato.
Grazie in anticipo per qualsiasi aiuto!
Non so se/quando le cose sono cambiate, ma secondo i documenti attuali, e la mia esperienza personale, è ora necessario utilizzare 'r +' o 'r + b' per aprire una file sia per la lettura e la scrittura https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files – JonoCoetzee
@JonoCoetzee Sembra che entrambi funzionino in modo equivalente, ma l'ho modificato per essere migliore allineato con i documenti. Grazie. – cobbal