2015-02-15 6 views
5

Podążam za tutorialem, aby nauczyć się czytać i pisać w pliku. Otrzymuję następujący błąd. Nie rozumiem dlaczego.Python ValueError: Operacja we/wy w zamkniętym pliku. przykładowy samouczek nie działa

C:\Python27\python.exe "C:/Automation/Python/Write to files/test3.py" 
Traceback (most recent call last): 
    File "C:/Automation/Python/Write to files/test3.py", line 8, in <module> 
    f.read('newfile.txt', 'r') 
ValueError: I/O operation on closed file 

Mój kod jest

f = open("newfile.txt", "w") 
f.write("hello world\n") 
f.write("Another line\n") 
f.close() 

f.read('newfile.txt', 'r') 
print f.read() 

Próbowałem umieścić f.close w dolnej części kodu, ale wciąż ten sam błąd.

Część do zapisu działa, jeśli skomentuję numer f.read. Błąd występuje w części f.read.

Odpowiedz

6

Linia po f.close(), która jest f.read('newfile.txt', 'r'), powinna być f = open('newfile.txt', 'r').

To

f = open('newfile.txt', 'r') 
print f.read() 
f.close() 

Po czym trzeba dodać f.close() ponownie.

mała uwaga

jak w Pythonie, wartość domyślna dla 2 arg z open jest r można proste zrobić open('newfile.txt')

1

Jak przedstawiono powyżej, kiedy zamknięte plik należy otworzyć plik tak, że można ją przeczytać

f = open('newfile.txt', 'r') 
print f.read() 
f.close() 
2

nie można wykonać operacji I/o na file_obj po zamknięciu go tzn

file_obj.close() 

Więc jeśli chcesz, aby otworzyć ten sam plik zrobić:

if(file_obj.closed): 
    file_obj = open(file_obj.name, file_obj.mode) 

print (file.obj.read()) 
file_obj.close() 
Powiązane problemy