Materjalid koostas ja kursuse viib läbi
Tartu Ülikooli arvutiteaduse instituudi programmeerimise õpetamise töörühm
7.3 ValueError: I/O operation on closed file
Veateade ValueError: I/O operation on closed file tekib siis, kui Pythoni programm üritab etteantud faili sisu lugeda, kuid fail on selleks hetkeks juba sulgemiskäsu saanud.
Tuleb jälgida, et faili sulgemisfunktsioon close
oleks tsükli sees õige taandega.
Näide 1:
nimi = input("Sisestage faili nimi koos laiendiga: ") fail = open(nimi, encoding="UTF-8") for rida in fail: print(rida) fail.close()
Veateade kuvatakse, sest fail sulgetakse peale tsükli esimest sammu:
>>> %Run Test.py Sisestage faili nimi koos laiendiga: andmed.txt must, kollane, punane, valge, roheline Traceback (most recent call last): File "C:\Users\Kursus\Test.py", line 3, in <module> for rida in fail: ValueError: I/O operation on closed file. >>>
Võimalik parandus:
Faili sulgemisfunktsioon close
tuleks tsüklist väljapoole liigutada.
Näide parandatud programmist:
nimi = input("Sisestage faili nimi koos laiendiga: ") fail = open(nimi, encoding="UTF-8") for rida in fail: print(rida) fail.close()