Antworten:
In Python:
open('file.txt', 'w').close()
Oder alternativ, wenn Sie bereits eine geöffnete Datei haben:
f = open('file.txt', 'r+')
f.truncate(0) # need '0' when using r+
In C ++ könnten Sie etwas Ähnliches verwenden.
#include<fstream>und dann std::ofstream("file.txt");ungefähr so kurz wie in Python. :)
f.seek(0)nach f.truncate(0), sonst werden Sie seltsame haben \ x00 am Anfang der Datei angehängt.
Keine vollständige Antwort, sondern eher eine Erweiterung der Antwort von ondra
truncate()Stellen Sie bei der Verwendung (meiner bevorzugten Methode) sicher, dass sich Ihr Cursor an der gewünschten Position befindet. Wenn eine neue Datei zum Lesen geöffnet wird open('FILE_NAME','r'), befindet sich der Cursor standardmäßig auf 0. Wenn Sie die Datei jedoch in Ihrem Code analysiert haben, stellen Sie sicher, dass Sie erneut auf den Anfang der Datei zeigen, dh truncate(0)
standardmäßig wird truncate()der Inhalt einer Datei ab der aktuellen Cusror-Position abgeschnitten.
Wenn Sie eine Datei im "Schreib" -Modus öffnen, wird sie gelöscht. Sie müssen nicht speziell darauf schreiben:
open("filename", "w").close()
(Sie sollten es schließen, da der Zeitpunkt, zu dem die Datei automatisch geschlossen wird, möglicherweise implementierungsspezifisch ist.)
Vom Benutzer @jamylak eine alternative Form von open("filename","w").close()IS
with open('filename.txt','w'): pass
Bei der Verwendung with open("myfile.txt", "r+") as my_file:werden seltsame Nullen angezeigt myfile.txt, insbesondere da ich die Datei zuerst lese. Damit es funktioniert, musste ich zuerst den Zeiger my_fileauf den Anfang der Datei mit ändern my_file.seek(0). Dann könnte ich my_file.truncate()die Datei löschen.
Sie müssen die Datei überschreiben. In C ++:
#include <fstream>
std::ofstream("test.txt", std::ios::out).close();
close()Anruf ist nicht erforderlich . Der Destruktor schließt die Datei. Sie müssen also nur eine temporäre erstellen:ofstream("test.txt");
Wenn Sie den Dateizeiger in Ihrem Programm auf null setzen, wird nur dieser Verweis auf die Datei entfernt. Die Datei ist noch da. Ich denke, die remove()Funktion im c stdio.hist das, wonach Sie dort suchen. Ich bin mir nicht sicher über Python.
Wenn Ihnen die Sicherheit wichtig ist, reicht es nicht aus, die Datei zum Schreiben zu öffnen und wieder zu schließen. Zumindest einige der Informationen befinden sich noch auf dem Speichergerät und können beispielsweise mithilfe eines Dienstprogramms zur Wiederherstellung von Datenträgern gefunden werden.
Angenommen, die zu löschende Datei enthält beispielsweise Produktionskennwörter und muss sofort nach Abschluss des vorliegenden Vorgangs gelöscht werden.
Wenn Sie die Datei nach Beendigung nicht mehr füllen, können Sie sicherstellen, dass die vertraulichen Informationen zerstört werden.
In einem kürzlich durchgeführten Projekt haben wir den folgenden Code verwendet, der für kleine Textdateien gut geeignet ist. Der vorhandene Inhalt wird mit Nullen überschrieben.
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)
Beachten Sie, dass eine Nullfüllung Ihre Sicherheit nicht garantiert. Wenn Sie wirklich besorgt sind, sollten Sie am besten null füllen und ein spezielles Dienstprogramm wie File Shredder oder CCleaner verwenden , um den "leeren" Speicherplatz auf Ihrem Laufwerk zu löschen.
Sie können eine vorhandene Datei nur dann "löschen", wenn Sie das Ende löschen müssen. Geben Sie sich entweder mit dem Überschreiben eines "leeren" Werts zufrieden oder lesen Sie die Teile der Datei, die Sie interessieren, und schreiben Sie sie in eine andere Datei.
Da Textdateien sequentiell sind, können Sie Daten auf ihnen nicht direkt löschen. Ihre Optionen sind:
Schauen Sie sich die seek/ truncatefunction / method an, um eine der oben genannten Ideen umzusetzen. Sowohl Python als auch C haben diese Funktionen.
os.removeoder os.unlinkin Python oder unlinkin C. Eine andere Option besteht darin, die Datei einfach zum Schreiben oder Verwenden erneut zu öffnen truncate.
Schreiben und Lesen von Dateiinhalten
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
Es hat bei mir funktioniert