Risposte:
In pitone:
open('file.txt', 'w').close()
O in alternativa, se hai già un file aperto:
f = open('file.txt', 'r+')
f.truncate(0) # need '0' when using r+
In C ++, potresti usare qualcosa di simile.
#include<fstream>e poi std::ofstream("file.txt");circa quanto in Python. :)
f.seek(0)dopo f.truncate(0), altrimenti si avrà uno strano \ x00 aggiunto all'inizio del file.
Non una risposta completa più di un'estensione alla risposta di ondra
Quando usi truncate()(il mio metodo preferito) assicurati che il cursore sia nella posizione richiesta. Quando viene aperto un nuovo file per la lettura open('FILE_NAME','r'), il cursore si trova su 0 per impostazione predefinita. Ma se hai analizzato il file all'interno del tuo codice, assicurati di puntare di nuovo all'inizio del file, ovvero truncate(0)
per impostazione predefinita truncate()tronca il contenuto di un file a partire dalla posizione corrente dell'errore.
L'apertura di un file in modalità "scrittura" lo cancella, non è necessario specificarlo:
open("filename", "w").close()
(dovresti chiuderlo poiché i tempi di chiusura automatica del file potrebbero essere specifici dell'implementazione)
Dall'utente @jamylak una forma alternativa di open("filename","w").close()è
with open('filename.txt','w'): pass
Durante l'utilizzo with open("myfile.txt", "r+") as my_file:, ottengo strani zeri myfile.txt, soprattutto perché sto leggendo prima il file. Perché funzioni, ho prima dovuto cambiare il puntatore my_fileall'inizio del file con my_file.seek(0). Quindi potrei fare my_file.truncate()per cancellare il file.
Devi sovrascrivere il file. In C ++:
#include <fstream>
std::ofstream("test.txt", std::ios::out).close();
close()chiamata. Il distruttore chiuderà il file. Quindi devi solo creare un temporaneo:ofstream("test.txt");
Assegnare il puntatore del file a null all'interno del programma eliminerà semplicemente quel riferimento al file. Il file è ancora lì. Penso che la remove()funzione in c stdio.hsia ciò che stai cercando lì. Non sono sicuro di Python.
Se la sicurezza è importante per te, aprire il file per la scrittura e chiuderlo di nuovo non sarà sufficiente. Almeno alcune delle informazioni saranno ancora sul dispositivo di archiviazione e potrebbero essere trovate, ad esempio, usando un'utilità di recupero del disco.
Supponiamo, ad esempio, che il file che stai cancellando contenga password di produzione e debba essere eliminato immediatamente dopo il completamento della presente operazione.
Azzerare il file una volta che hai finito di usarlo aiuta a garantire che le informazioni sensibili vengano distrutte.
In un recente progetto abbiamo utilizzato il seguente codice, che funziona bene per piccoli file di testo. Sovrascrive i contenuti esistenti con linee di zeri.
import os
def destroy_password_file(password_filename):
with open(password_filename) as password_file:
text = password_file.read()
lentext = len(text)
zero_fill_line_length = 40
zero_fill = ['0' * zero_fill_line_length
for _
in range(lentext // zero_fill_line_length + 1)]
zero_fill = os.linesep.join(zero_fill)
with open(password_filename, 'w') as password_file:
password_file.write(zero_fill)
Nota che il riempimento zero non garantirà la tua sicurezza. Se sei davvero preoccupato, sarebbe meglio riempire zero e utilizzare un'utilità specializzata come File Shredder o CCleaner per pulire lo spazio "vuoto" sul tuo disco.
Non è possibile "cancellare" da un file sul posto a meno che non sia necessario cancellare la fine. O accontentati di una sovrascrittura di un valore "vuoto", oppure leggi le parti del file che ti interessano e scrivile in un altro file.
Poiché i file di testo sono sequenziali, non è possibile cancellare direttamente i dati su di essi. Le tue opzioni sono:
Guarda il metodo seek/ truncatefunzione / per implementare una qualsiasi delle idee sopra. Sia Python che C hanno queste funzioni.
os.removeo os.unlinkin Python o unlinkin C. Un'altra opzione è semplicemente riaprire il file per la scrittura o l'uso truncate.
Scrivere e leggere il contenuto del file
def writeTempFile(text = ''):
filePath = "/temp/file1.txt"
if not text: # If blank return file content
f = open(filePath, "r")
slug = f.read()
return slug
else:
f = open(filePath, "a") # Create a blank file
f.seek(0) # sets point at the beginning of the file
f.truncate() # Clear previous content
f.write(text) # Write file
f.close() # Close file
return text
Ha funzionato per me
Puoi anche usare questo (basato su alcune delle risposte sopra):
file = open('filename.txt', 'w')
file.write('')
file.close
ovviamente questo è un modo davvero brutto per cancellare un file perché richiede così tante righe di codice, ma ho appena scritto questo per mostrarti che può essere fatto anche con questo metodo.
buona programmazione!