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