Wybacz, ale w pracy muszę trochę douczać ludzi pythona i jestem w trybie nauczycielskim. Pozwolę sobie poprawić troszke Twój kod, tak jak to jest przyjęte w społeczności pythonowej.
wynik = open('out.txt', 'w')
wynik.write('aaa\nbbb')
wynik.close()
plik = open('kalk.py', 'r')
for line in plik: # zazwyczaj lepiej czytać po linijkach, zwłaszcza jak duży plik
wynik = open('out.txt', 'r+')
for l in wynik:
if line == l:
break
else:
wynik.seek(0,2)
wynik.write("\nLinia dodana")
wynik.close()
plik.close()
Jeżeli plik out.txt nie jest duży, to lepiej zrobić tak (szybsze wyszukiwanie w pamięci niż w pliku i mniej jeżdżenia po dysku):
wynik = open('out.txt', 'w')
wynik.write('aaa\nbbb')
wynik.close()
wynik = open('out.txt', 'r')
out_tab = [line.strip() for line in wynik]
wynik.close()
plik = open('kalk.py', 'r')
for line in plik:
if line.strip() not in out_tab:
out_tab.append("Linia dodana")
plik.close()
wynik = open('out.txt', 'w')
wynik.writelines([line + '\n' for line in out_tab])
wynik.close()
A w pythonie >= 2.5 można się pobawić nawet by to było ładne i bezpieczne (kod powyżej też powinien być zabezpieczony przez try..finally):
from __future__ import with_statement
with open('out.txt', 'w') as wynik:
wynik.write('aaa\nbbb')
with open('out.txt', 'r') as wynik:
out_tab = [line.strip() for line in wynik]
with open('kalk.py', 'r') as plik:
for line in plik:
if line.strip() not in out_tab:
out_tab.append("Linia dodana")
with open('out.txt', 'w') as wynik:
wynik.writelines([line + '\n' for line in out_tab])
Cieszę się, że przybywa nam nowy pythonista. Owocnego kodowania!