Respuestas:
En python:
open('file.txt', 'w').close()
O, alternativamente, si ya tiene un archivo abierto:
f = open('file.txt', 'r+')
f.truncate(0) # need '0' when using r+
En C ++, podría usar algo similar.
#include<fstream>y luego std::ofstream("file.txt");tan corto como en Python. :)
f.seek(0)después f.truncate(0), de lo contrario tendrá \ x00 extraños al principio del archivo.
No es una respuesta completa, sino una extensión de la respuesta de Ondra
Cuando use truncate()(mi método preferido) asegúrese de que su cursor esté en la posición requerida. Cuando se abre un nuevo archivo para leer, open('FILE_NAME','r')su cursor está en 0 de forma predeterminada. Pero si ha analizado el archivo dentro de su código, asegúrese de apuntar al principio del archivo nuevamente, es decir, truncate(0)
por defecto truncate()trunca el contenido de un archivo comenzando desde la posición actual del cusror.
Al abrir un archivo en modo "escritura", se borra, no tiene que escribir específicamente en él:
open("filename", "w").close()
(debe cerrarlo ya que el momento en que el archivo se cierra automáticamente puede ser específico de la implementación)
Del usuario @jamylak, una forma alternativa de open("filename","w").close()es
with open('filename.txt','w'): pass
Cuando lo uso with open("myfile.txt", "r+") as my_file:, obtengo ceros extraños myfile.txt, especialmente porque estoy leyendo el archivo primero. Para que funcione, primero tuve que cambiar el puntero de my_fileal comienzo del archivo con my_file.seek(0). Entonces podría hacer my_file.truncate()para borrar el archivo.
Tienes que sobrescribir el archivo. En C ++:
#include <fstream>
std::ofstream("test.txt", std::ios::out).close();
close()llamada. El destructor cerrará el archivo. Así que solo necesita crear un temporal:ofstream("test.txt");
Asignar el puntero de archivo a nulo dentro de su programa simplemente eliminará esa referencia al archivo. El archivo sigue ahí. Creo que la remove()función en la c stdio.hes lo que estás buscando allí. No estoy seguro acerca de Python.
Si la seguridad es importante para usted, entonces abrir el archivo para escribirlo y cerrarlo nuevamente no será suficiente. Al menos parte de la información seguirá estando en el dispositivo de almacenamiento y podría encontrarse, por ejemplo, utilizando una utilidad de recuperación de disco.
Supongamos, por ejemplo, que el archivo que está borrando contiene contraseñas de producción y debe eliminarse inmediatamente después de que se complete la operación actual.
Rellenar con cero el archivo una vez que haya terminado de usarlo ayuda a garantizar que se destruya la información confidencial.
En un proyecto reciente utilizamos el siguiente código, que funciona bien para archivos de texto pequeños. Sobrescribe los contenidos existentes con líneas de ceros.
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)
Tenga en cuenta que el relleno cero no garantizará su seguridad. Si realmente le preocupa, sería mejor rellenar con ceros y utilizar una utilidad especializada como File Shredder o CCleaner para limpiar el espacio 'vacío' en su unidad.
No puede "borrar" de un archivo en el lugar a menos que necesite borrar el final. Puede contentarse con sobrescribir un valor "vacío" o leer las partes del archivo que le interesan y escribirlo en otro archivo.
Como los archivos de texto son secuenciales, no puede borrar directamente los datos en ellos. Sus opciones son:
Mire el método seek/ truncatefunction / para implementar cualquiera de las ideas anteriores. Tanto Python como C tienen esas funciones.
os.removeo os.unlinken python, o unlinken C. Otra opción es simplemente volver a abrir el archivo para escribirlo o usarlo truncate.
Escribir y leer contenido de archivos
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
Funciono para mi
También puede usar esto (basado en algunas de las respuestas anteriores):
file = open('filename.txt', 'w')
file.write('')
file.close
Por supuesto, esta es una forma realmente mala de borrar un archivo porque requiere muchas líneas de código, pero acabo de escribir esto para mostrarle que también se puede hacer en este método.
feliz codificación!