Hvordan tømme en tekstfil i Python


Beste svaret

Hvordan tømmer du en tekstfil i Python? / span>

På de fleste språk bør det være tilstrekkelig å åpne filen for skriving og deretter lukke den. Idiomet jeg vil bruke er:

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

pass

Dette bør etterlate en fil med lengde 0.

Spørsmålet er, hvorfor vil du gjøre dette? Hvis du vil at filen skal være borte, slett den (se os.remove). Hvis du har tenkt å overskrive det, trenger du ikke å fjerne det først. Åpne den for å skrive og skrive det nye innholdet.

Svar

I gamle versjoner av Python hadde skillet mellom tekst og binære filer å gjøre med hvordan Python behandlet linjeseparatorer (stort sett bare relevant til MS-DOS / Windows-håndtering av tekstfiler (ved bruk av CR / LF-par tegn for linjeterminering) og gamle Macintosh System (pre-MacOS X) tekstfiler (som brukte CR, vognretur (\ r) eller ASCII 0x0D) i stedet for LF (linjefôr, \ n, ASCII 0x0A, som brukes på tvers av Unix, Linux og MacOS X).

Dette ble normalt automatisk oppdaget av Python2-tolker, og måtte bare av og til bli over- ridd. Men alle filene kunne behandles som enkle byte-strømmer (som var utskiftbare med 8-biters ASCII-tegn) under Python 2 og tidligere. Flagget «b» / modus på open () for å behandle filer som binære handlet omtrent om linjeendelser.

Med Python 3 er historien mer komplisert. Men det enkle grepet er at tekstfiler er standard og behandles som noen koding av Unicode (UTF-8 eller US-ASCII for eksempel). For å håndtere filer som binære, legger du bare til «b» -flagget i modusargumentet mens du åpner filen. Men nå medfører alle operasjoner på den filen byte objekter i stedet for strenger. Så les tilbake byte og data må kastes som byte for samtaler til .write () metode (og så videre).

Legg merke til disse eksemplene:

# 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

Modusen kan også være w eller w + for skrivbare tekstfiler (med valgfri lese / skriv ved å legge til +) eller a eller a + for bare å legge til . b -flagget kan legges til alle disse for byte (binær) i stedet for tekst.

Merk: Du kan åpne tekstfiler i binær modus. Det er bare at Python vil behandle dem som byte-strømmer i stedet for tekst, og du må kalle strengkonverteringsfunksjoner på innholdet (med eksplisitte kodingsargumenter) for å bruke dem som strenger.

Her er en guide for flere detaljer: Python 3.X Strings Tutorial av Mark Lutz

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *