2012-05-17 13 views
32

Już utworzyłem plik txt za pomocą Pythona z kilkoma liniami tekstu, które będą czytane przez prosty program. Mam jednak problem z ponownym otwieraniem pliku i pisaniem dodatkowych wierszy w pliku w późniejszej części programu. (Linie będą pisane od danych wejściowych użytkownika uzyskanych później.)jak dodać linie do istniejącego pliku za pomocą python

with open('file.txt', 'w') as file: 
    file.write('input') 

Jest to przy założeniu, że „plik.txt” została otwarta przed i napisany w. W otwarciu tego po raz drugi jednak z kodem, który Obecnie mam, muszę wymazać wszystko, co było napisane wcześniej i przepisać nową linię. Czy istnieje sposób, aby temu zapobiec (i ewentualnie ograniczyć nadmierny kod ponownego otwierania pliku)?

+5

Do nie używaj "pliku" jako nazwy zmiennej, ponieważ jest ona ukryta w wbudowanym pliku typu: – Fabian

Odpowiedz

37

Jeśli chcesz dołączyć do pliku, otwórz go pod numerem 'a'. Jeśli chcesz przeszukać plik, aby znaleźć miejsce, w którym powinieneś wstawić linię, użyj 'r+'. (docs)

31

Otwórz plik "dopisz" zamiast "napisz".

with open('file.txt', 'a') as file: 
    file.write('input') 
+11

Uwaga! To nie doda nowej linii. Jeśli musisz dodać linię do pliku tekstowego (w przeciwieństwie do fragmentu linii), zakończ dane za pomocą '\ n', np .:' file.write ('input \ n') ' –

9

Zastosowanie 'a', 'a' oznacza append. Coś zapisanego do pliku otwartego z atrybutem 'a' jest zapisane na końcu pliku.

with open('file.txt', 'a') as file: 
    file.write('input') 
6

powyższych odpowiedzi są poprawne, ale aby dołączyć dane jako nowy wiersz, w przeciwieństwie do sklejaniu ją na końcu ostatniego wiersza w pliku, należy użyć następujących:

with open('file.txt', 'a') as file: 
    file.writelines('input') 
+0

To jest właściwie niepoprawne. 'file.write (arg)' zapisuje 'arg' do pliku tak jak jest. 'file.writelines (arg)' zapisuje wszystkie elementy 'arg' (np. znaki ciągu lub elementów na liście) do pliku _nieważniej_ _nie_ _parparatory_. W tym przykładzie obie robią dokładnie to samo. Zobacz https://docs.python.org/3/library/io.html. Ilekroć piszesz pliki, musisz sam dodać końcówki linii. –

Powiązane problemy