Kiedy uruchomiony następujący kod Pythona:seek(), a następnie read(), a następnie napisać() w Pythonie
>>> f = open(r"myfile.txt", "a+")
>>> f.seek(-1,2)
>>> f.read()
'a'
>>> f.write('\n')
otrzymuję następujący (pomocny) wyjątek:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 0] Error
To samo coś się dzieje, gdy otwiera się z "r +".
Czy to ma się nie udać? Czemu?
Edit:
- Oczywiście jest to tylko przykład, a nie to, co ja rzeczywiście próbuje wykonać. Moim faktycznym celem było sprawdzenie, czy pliki kończą się "\ n", lub dodają je przed dodaniem nowych linii.
- Pracuję pod kontrolą systemu Windows XP, a problem występuje zarówno w Pythonie 2.5, jak i Pythonie 2.6.
udało się obejść ten problem poprzez wywołanie poszukiwania() ponownie:
F = czynna (R "Mójplik.txt", "A +")
f.seek (-1 2)
f.read()
'a'
f.seek (-10,2)
f.write (\ n ')
Rzeczywiste parametry drugiego połączenia próbnego nie wydają się mieć znaczenia.
Jakiego systemu operacyjnego i wersji Pythona używasz? Wygląda na to, że działa dobrze z Pythonem 2.4.3 pod Linuksem 2.6.17. –
Czy to jest dokładnie to, co chcesz robić, czy też jest to uproszczenie? Jeśli to zadanie, to dlaczego nie po prostu otworzyć jako "a", a potem zadzwonić do f.write, bez interweniującego poszukiwania? – kyle
Również (do Lance), w ogóle nie działa w Pythonie 2.5 na Windows XP. – kyle