Réponses:
En python:
open('file.txt', 'w').close()
Ou bien, si vous avez déjà un fichier ouvert:
f = open('file.txt', 'r+')
f.truncate(0) # need '0' when using r+
En C ++, vous pouvez utiliser quelque chose de similaire.
#include<fstream>puis à std::ofstream("file.txt");peu près aussi court qu'en Python. :)
f.seek(0)après f.truncate(0), sinon vous aurez un \ x00 bizarre ajouté au début du fichier.
Pas une réponse complète mais plutôt une extension de la réponse d'Ondra
Lorsque vous utilisez truncate()(ma méthode préférée), assurez-vous que votre curseur est à la position requise. Lorsqu'un nouveau fichier est ouvert en lecture, open('FILE_NAME','r')son curseur est à 0 par défaut. Mais si vous avez analysé le fichier dans votre code, assurez-vous de pointer à nouveau au début du fichier, c'est-à-dire que truncate(0)
par défaut truncate()tronque le contenu d'un fichier à partir de la position actuelle du cusror.
L'ouverture d'un fichier en mode "écriture" l'efface, vous n'avez pas à y écrire spécifiquement:
open("filename", "w").close()
(vous devez le fermer car le moment auquel le fichier se ferme automatiquement peut être spécifique à l'implémentation)
De l'utilisateur @jamylak, une forme alternative de open("filename","w").close()is
with open('filename.txt','w'): pass
Lors de l'utilisation with open("myfile.txt", "r+") as my_file:, j'obtiens d'étranges zéros myfile.txt, d'autant plus que je lis le fichier en premier. Pour que cela fonctionne, j'ai d'abord dû changer le pointeur de my_filevers le début du fichier avec my_file.seek(0). Ensuite, je pourrais faire my_file.truncate()pour effacer le fichier.
Vous devez écraser le fichier. En C ++:
#include <fstream>
std::ofstream("test.txt", std::ios::out).close();
close()appel. Le destructeur fermera le fichier. Il vous suffit donc de créer un temporaire:ofstream("test.txt");
Attribuer le pointeur de fichier à null dans votre programme supprimera simplement cette référence au fichier. Le fichier est toujours là. Je pense que la remove()fonction dans le c stdio.hest ce que vous recherchez là-bas. Pas sûr de Python.
Si la sécurité est importante pour vous, ouvrir le fichier pour l'écrire et le refermer ne suffira pas. Au moins certaines des informations seront toujours sur le périphérique de stockage et pourront être trouvées, par exemple, à l'aide d'un utilitaire de récupération de disque.
Supposons, par exemple, que le fichier que vous effacez contient des mots de passe de production et doit être supprimé immédiatement après la fin de l'opération en cours.
Le remplissage à zéro du fichier une fois que vous avez fini de l'utiliser permet de garantir la destruction des informations sensibles.
Sur un projet récent, nous avons utilisé le code suivant, qui fonctionne bien pour les petits fichiers texte. Il écrase le contenu existant avec des lignes de zéros.
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)
Notez que le remplissage nul ne garantira pas votre sécurité. Si vous êtes vraiment inquiet, vous feriez mieux de ne rien remplir et d' utiliser un utilitaire spécialisé comme File Shredder ou CCleaner pour nettoyer l'espace `` vide '' de votre disque.
Vous ne pouvez pas «effacer» un fichier sur place, sauf si vous devez effacer la fin. Soit vous contenter de remplacer une valeur «vide», soit lire les parties du fichier qui vous intéressent et l'écrire dans un autre fichier.
Les fichiers texte étant séquentiels, vous ne pouvez pas effacer directement les données qu'ils contiennent. Vos options sont:
Regardez la méthode seek/ truncatefunction / pour implémenter l'une des idées ci-dessus. Python et C ont tous deux ces fonctions.
os.removeou os.unlinken python, ou unlinken C. Une autre option consiste simplement à rouvrir le fichier pour l'écriture ou l'utilisation truncate.
Écriture et lecture du contenu d'un fichier
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
Cela a fonctionné pour moi
Vous pouvez également utiliser ceci (basé sur quelques-unes des réponses ci-dessus):
file = open('filename.txt', 'w')
file.write('')
file.close
bien sûr, c'est une très mauvaise façon d'effacer un fichier car cela nécessite tellement de lignes de code, mais je viens de l'écrire pour vous montrer que cela peut également être fait dans cette méthode.
bon codage!