Sådan ryddes en tekstfil i Python


Bedste svar

Hvordan rydder du en tekstfil i Python? / span>

På de fleste sprog skal det være tilstrækkeligt at åbne filen til skrivning og derefter lukke den. Idiomet, som jeg vil bruge, er:

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

pass

Dette skal efterlade en fil med 0 længder.

Spørgsmålet er, hvorfor vil du gøre dette? Hvis du vil have filen væk, skal du slette den (se os.remove). Hvis du agter at overskrive det, behøver du ikke rydde det først. Åbn det til skrivning og skriv det nye indhold.

Svar

I gamle versioner af Python havde forskellen mellem tekst og binære filer at gøre med, hvordan Python behandlede linjeseparatorer (for det meste kun relevant til MS-DOS / Windows-håndtering af tekstfiler (ved hjælp af CR / LF-tegnpar til linjeterminering) og gamle Macintosh System-tekstfiler (før MacOS X) (som brugte CR, vognretur (\ r) eller ASCII 0x0D) i i stedet for LF (line feed, \ n, ASCII 0x0A, der bruges på tværs af Unix, Linux og MacOS X).

Dette blev normalt automatisk detekteret af Python2-tolke og måtte kun lejlighedsvis være over- redet. Men alle filer kunne behandles som enkle byte-streams (som var udskiftelige med 8-bit ASCII-tegn) under Python 2 og tidligere. Flagget “b” / mode på åben () til behandling af filer som binær var næsten linieendelser.

Med Python 3 er historien mere kompliceret. Men det enkle tag er, at tekstfiler er standard og behandles som nogle kodning af Unicode (UTF-8 eller US-ASCII for eksempel). For at håndtere filer som binære tilføjer du stadig bare “b” -flagget til dit tilstandsargument, mens du åbner filen. Men nu medfører alle operationer på den fil bytes objekter snarere end strenge. Så læser return bytes og data skal kastes som bytes for opkald til .write () metode (og så videre).

Bemærk disse eksempler:

# 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

Tilstanden kan også være w eller w + til skrivbare tekstfiler (med valgfri læse / skrive ved at tilføje +) eller a eller a + til kun at tilføje . Flagget b kan føjes til et hvilket som helst af disse for bytes (binært) snarere end tekst.

Bemærk: Du kan åbne tekstfiler i binær tilstand. Det er bare, at Python behandler dem som byte-streams snarere end tekst, og du bliver eksplicit nødt til at kalde strengkonverteringsfunktioner på indholdet (med eksplicit kodningsargumenter) for at bruge dem som strenge.

Her er en guide til flere detaljer: Python 3.X Strings Tutorial af Mark Lutz

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *