Migliore risposta
Come si cancella un file di testo in Python?
Nella maggior parte delle lingue, dovrebbe essere sufficiente aprire il file per la scrittura e poi chiuderlo. Lidioma che userei è:
with open(theFile, “w”) as fp:
pass
Questo dovrebbe lasciare un file di lunghezza 0.
La domanda è, perché vorresti farlo? Se vuoi che il file scompaia, cancellalo (vedi os.remove). Se intendi sovrascriverlo, non è necessario cancellarlo prima. Aprilo per scrivere e scrivere i nuovi contenuti.
Risposta
Nelle vecchie versioni di Python la distinzione tra file di testo e binari aveva a che fare con il modo in cui Python trattava i separatori di riga (per lo più solo rilevanti alla gestione MS-DOS / Windows di file di testo (utilizzando coppie di caratteri CR / LF per la terminazione di riga) e file di testo del vecchio sistema Macintosh (precedente a MacOS X) (che utilizzava CR, ritorno a capo (\ r) o ASCII 0x0D) in al posto dellLF (avanzamento riga, \ n, ASCII 0x0A, utilizzato su Unix, Linux e MacOS X).
Normalmente veniva rilevato automaticamente dagli interpreti Python2 e solo occasionalmente doveva essere superato cavalcato. Ma tutti i file potevano essere trattati come semplici flussi di byte (che erano intercambiabili con caratteri ASCII a 8 bit) in Python 2 e versioni precedenti. Il flag / modalità “b” su open () per trattare i file come binari riguardava solo le terminazioni di riga.
Con Python 3 la storia è più complicata. Ma la semplice conclusione è che i file di testo sono limpostazione predefinita e trattati come alcuni codifica di Unicode (UTF-8 o US-ASCII per esempio). Per gestire i file come binari è sufficiente aggiungere il flag “b” allargomento della modalità durante lapertura del file. Ma ora tutte le operazioni su quel file implicano byte oggetti piuttosto che stringhe. Quindi si legge return byte e i dati devono essere espressi come byte per le chiamate a .write () (e così via).
Nota questi esempi:
# 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
La modalità può anche essere w o w + per file di testo scrivibili (con lettura / scrittura opzionale aggiungendo il +) o a o a + solo per aggiunta . Il flag b può essere aggiunto a uno qualsiasi di quelli per i byte (binari) anziché per il testo.
Nota: puoi aprire file di testo in modalità binaria. È solo che Python li tratterà come flussi di byte piuttosto che come testo e dovrai chiamare esplicitamente funzioni di conversione di stringhe sui contenuti (con argomenti di codifica espliciti) per usarli come stringhe.
Ecco una guida per maggiori dettagli: Python 3.X Strings Tutorial di Mark Lutz