Bästa svaret
Hur rensar du en textfil i Python?
På de flesta språk bör det vara tillräckligt att öppna filen för skrivning och sedan stänga den. Idiomet jag skulle använda är:
with open(theFile, “w”) as fp:
pass
Detta bör lämna en fil med 0 längder.
Frågan är, varför vill du göra detta? Om du vill ha filen borta, ta bort den (se os.remove). Om du tänker skriva över det behöver du inte rensa det först. Öppna den för att skriva och skriva det nya innehållet.
Svar
I gamla versioner av Python hade skillnaden mellan text och binära filer att göra med hur Python behandlade linjeseparatorer (mestadels bara relevant till MS-DOS / Windows-hantering av textfiler (med CR / LF-par tecken för radavslutning) och gamla Macintosh System-textfiler (före MacOS X) (som använde CR, vagnretur (\ r) eller ASCII 0x0D) i i stället för LF (radmatning, \ n, ASCII 0x0A, som används i Unix, Linux och MacOS X).
Detta upptäcktes normalt automatiskt av Python2-tolkar och var bara ibland tvungen att vara över- ridd. Men alla filer kunde behandlas som enkla bytesströmmar (som var utbytbara med 8-bitars ASCII-tecken) under Python 2 och tidigare. ”b” -flaggan / -läget på öppen () för att behandla filer som binära handlade bara om radslut.
Med Python 3 är berättelsen mer komplicerad. Men det enkla taget är att textfiler är standard och behandlas som vissa kodning av Unicode (UTF-8 eller US-ASCII till exempel). För att hantera filer som binära lägger du fortfarande bara till ”b” -flaggan i ditt lägesargument medan du öppnar filen. Men nu innebär alla operationer i den filen byte objekt snarare än strängar. Så läser retur byte och data måste gjutas som byte för samtal till .write () metod (och så vidare).
Observera dessa exempel:
# 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
Läget kan också vara w eller w + för skrivbara textfiler (med valfri läs / skriv genom att lägga till +) eller a eller a + för endast tillägg . Flaggan b kan läggas till någon av dessa för byte (binär) snarare än text.
Obs! Du kan öppna textfiler i binärt läge. Det är bara att Python kommer att behandla dem som byte-strömmar snarare än text och du måste uttryckligen anropa strängkonverteringsfunktioner i innehållet (med explicita kodningsargument) för att använda dem som strängar.
Här är en guide för mer information: Python 3.X Strings Tutorial av Mark Lutz