Jak wyczyścić plik tekstowy w Pythonie


Najlepsza odpowiedź

Jak wyczyścić plik tekstowy w Pythonie?

W większości języków powinno wystarczyć otwarcie pliku do zapisu, a następnie zamknięcie go. Idiom, którego użyłbym to:

with open(theFile, “w”) as fp:

pass

Powinno to pozostawić plik o długości 0.

Pytanie brzmi: dlaczego chcesz to zrobić? Jeśli chcesz, aby plik zniknął, usuń go (zobacz os.remove). Jeśli chcesz go nadpisać, nie musisz go najpierw czyścić. Otwórz go do napisania i zapisz nową zawartość.

Odpowiedź

W starszych wersjach Pythona rozróżnienie między plikami tekstowymi a plikami binarnymi miało związek z tym, jak Python traktował separatory wierszy (głównie istotne do obsługi plików tekstowych w systemie MS-DOS / Windows (przy użyciu par znaków CR / LF do zakończenia linii) i starych plików tekstowych systemu Macintosh (przed MacOS X) (które używają CR, powrotu karetki (\ r) lub ASCII 0x0D) w zamiast LF (nowy wiersz, \ n, ASCII 0x0A, używany w systemach Unix, Linux i MacOS X).

Zwykle było to wykrywane automatycznie przez interpretery Python2 i tylko czasami musiało być nadpisywane ridden. Ale wszystkie pliki mogą być traktowane jako proste strumienie bajtów (które można było zamieniać 8-bitowymi znakami ASCII) w Pythonie 2 i wcześniejszych. Flaga / tryb „b” w open () do traktowania plików jako binarnych dotyczyło tylko końcówek wierszy.

W Pythonie 3 historia jest bardziej skomplikowana. Ale prostym wnioskiem jest to, że pliki tekstowe są plikami domyślnymi i traktowane jak niektóre kodowanie Unicode (na przykład UTF-8 lub US-ASCII). Aby obsługiwać pliki jako binarne, nadal po prostu dodajesz flagę „b” do argumentu mode podczas otwierania pliku. Ale teraz wszystkie operacje na tym pliku wymagają bajtów , a nie łańcuchów. Odczyty zwracają więc bajtów , a dane muszą być rzutowane jako bajty dla wywołań .write () (i tak dalej).

Zwróć uwagę na te przykłady:

# Default:

textfile = open(‘somefile.txt’)

## read-only, text, encoding depends on platform by likely UTF-8 or US-ASCII

# Binary:

data = open(‘somedata.bin’, ‘rb’)

## read-only, bytes() data

Tryb może być również w lub w + dla zapisywalnych plików tekstowych (z opcjonalnym odczytem / zapisem przez dodanie +) lub a lub a + tylko do dołączania . Flaga b może być dodana do dowolnej flagi oznaczającej bajty (binarne) zamiast tekstu.

Uwaga: możesz otwierać pliki tekstowe w tryb binarny. Po prostu Python potraktuje je jako strumienie bajtów, a nie tekst i będziesz musiał jawnie wywołać funkcje konwersji ciągów na zawartości (z wyraźnymi argumentami kodowania), aby użyć ich jako ciągów.

Oto przewodnik dla więcej szczegółów: Samouczek dotyczący języka Python 3.X Strings autorstwa Marka Lutza

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *