Beste antwoord
Hoe wis je een tekstbestand in Python?
In de meeste talen zou het voldoende moeten zijn om het bestand te openen om te schrijven en het vervolgens te sluiten. Het idioom dat ik zou gebruiken is:
with open(theFile, “w”) as fp:
pass
Dit zou een bestand met een lengte van 0 moeten achterlaten.
De vraag is: waarom zou je dit willen doen? Als je het bestand wilt verwijderen, verwijder het dan (zie os.remove). Als u van plan bent het te overschrijven, hoeft u het niet eerst te wissen. Open het om de nieuwe inhoud te schrijven en te schrijven.
Antwoord
In oude versies van Python had het onderscheid tussen tekst- en binaire bestanden te maken met hoe Python omging met lijnscheidingstekens (meestal alleen relevant naar MS-DOS / Windows-verwerking van tekstbestanden (met behulp van CR / LF-tekensparen voor regelafsluiting) en oude Macintosh-systeem (pre-MacOS X) tekstbestanden (die CR, regelterugloop (\ r) of ASCII 0x0D) in plaats van de LF (line feed, \ n, ASCII 0x0A, die wordt gebruikt in Unix, Linux en MacOS X).
Dit werd normaal gesproken automatisch gedetecteerd door Python2-tolken, en hoefde slechts af en toe bereden. Maar alle bestanden kunnen worden behandeld als eenvoudige streams van bytes (die uitwisselbaar waren met 8-bits ASCII-tekens) onder Python 2 en eerder. De “b” -vlag / modus op open () voor het behandelen van bestanden als binair ging zo ongeveer over regeleinden.
Met Python 3 is het verhaal gecompliceerder. Maar de simpele oplossing is dat tekstbestanden de standaard zijn en worden behandeld als sommige codering van Unicode (bijvoorbeeld UTF-8 of US-ASCII). Om bestanden als binair te behandelen, voegt u nog steeds gewoon de “b” -vlag toe aan uw mode-argument terwijl u het bestand opent. Maar nu bevatten alle bewerkingen op dat bestand bytes objecten in plaats van strings. Leest dus retour bytes en gegevens moeten worden gecast als bytes voor aanroepen naar de .write () methode (enzovoort).
Let op deze voorbeelden:
# 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
De modus kan ook w of w + zijn voor beschrijfbare tekstbestanden (met optioneel lezen / schrijven door de + toe te voegen) of a of a + alleen voor toevoegen . De b vlag kan worden toegevoegd aan elk van deze voor bytes (binair) in plaats van tekst.
Opmerking: u kunt tekstbestanden openen in binaire modus. Het is alleen dat Python ze zal behandelen als bytestromen in plaats van tekst en je zult expliciet stringconversiefuncties moeten aanroepen voor de inhoud (met expliciete coderingsargumenten) om ze als strings te gebruiken.
Hier is een gids voor meer details: Python 3.X Strings Tutorial door Mark Lutz