Tengo un archivo de texto que quiero borrar en Python. ¿Cómo puedo hacer eso?¿Cómo borrar el contenido del archivo de texto en Python?
Respuesta
en Python:
open('file.txt', 'w').close()
O, alternativamente, si ya tiene un archivo abierto:
f = open('file.txt', 'r+')
f.truncate()
En C++, podría utilizar algo similar.
'#include
el motivo por el que funciona (tanto en C++ como en python) se debe a que, por defecto, cuando abre un archivo para escribir, trunca los contenidos existentes. Entonces realmente es un efecto secundario, por lo que preferiría la llamada explícita a truncar() por razones de claridad, aunque no sea necesario. – rmeador
+1 para "si ya tiene un archivo abierto" – lajarre
Como los archivos de texto son secuenciales, no puede borrar datos directamente en ellos. Sus opciones son:
- La forma más común es crear un archivo nuevo. Lea desde el archivo original y escriba todo en el nuevo archivo, excepto la parte que desea borrar. Cuando se haya escrito todo el archivo, elimine el archivo anterior y cambie el nombre del nuevo archivo para que tenga el nombre original.
- También puede truncar y volver a escribir el archivo completo desde el punto que desea cambiar en adelante. Busque indicar que desea cambiar y lea el resto del archivo en la memoria. Busque el mismo punto, trunque el archivo y vuelva a escribir el contenido sin la parte que desea borrar.
- Otra opción simple es sobrescribir los datos con otros datos de la misma longitud. Para eso, busque la posición exacta y escriba los datos nuevos. La limitación es que debe tener la misma longitud exacta.
Mire la función/método seek
/truncate
para implementar cualquiera de las ideas anteriores. Tanto Python como C tienen esas funciones.
No puede "borrar" de un archivo en el lugar a menos que necesite borrar el final. O bien contente con una sobrescritura de un valor "vacío", o lea las partes del archivo que le interesan y escríbalo en otro archivo.
bien cómo sobrescribirlo sin dar un valor de basura? Quiero decir supongamos que hay una longitud de cadena de 9 y estoy sobreescribiendo con una longitud de cadena de 6. eso significaría 3 valores de basura rt? – Hick
Correcto. Además, debería tener alguna forma de identificar a cualquier lector el hecho de que esos 3 caracteres son basura. –
el hecho es que mi código se extiende entre python y C++. así que si una lectura de archivo se hace en C++ y un archivo escribe en python ... tanto el tiempo que se debe borrar el archivo ... – Hick
open("filename","w").close()
¡Es perfecto, es exactamente lo que está buscando mekasperasky! – Natim
Asignar el puntero al nulo dentro de su programa simplemente eliminará esa referencia al archivo. El archivo sigue ahí. Creo que la función remove()
en el c stdio.h
es lo que está buscando allí. No estoy seguro acerca de Python.
Alternativamente use unlink() en unistd.h. – Void
BTW, tanto remove() como unlink() disminuirán el recuento de referencias en un archivo normal, en realidad no lo borrarán. El archivo se borrará una vez que el recuento de referencias se reduzca a cero. Por ejemplo, si su proceso tiene el archivo abierto y llama a desvincular() o eliminar() en él, no se eliminará hasta que el archivo esté cerca() d (es decir, el recuento de ref se reduce a cero; también asume que no hay otros procesos) tener el archivo abierto). Este comportamiento es útil, por ejemplo, para asegurar que los archivos temporales no queden después de la terminación anormal del proceso (por ejemplo, abrir(), desvincular(), realizar el archivo IO, ** CRASH **, cerrar() NO llamado). – Void
Tiene que sobrescribir el archivo. En C++:
#include <fstream>
std::ofstream("test.txt", std::ios::out).close();
Esto es bueno para C++ :) – Natim
No hay necesidad de la llamada 'close()'. El destructor cerrará el archivo. Entonces solo necesitas crear un temporal: 'ofstream (" test.txt ");' – wilhelmtell
Estaba tan confundido hasta que me di cuenta de que la pregunta original se hacía sobre esto tanto en Python como en C++. – user1717828
No es una respuesta completa más de una extensión de la respuesta de Ondra
Al utilizar truncate()
(mi método preferido) asegurarse de que el cursor se encuentre en la posición requerida. Cuando se abre un nuevo archivo para lectura: 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 señalar al principio del archivo nuevamente, es decir truncate(0)
De forma predeterminada, truncate()
trunca el contenido de un archivo comenzando desde la posición actual de cusror.
De @jamylak usuario una forma alternativa de open("filename","w").close()
es
with open('filename.txt','w'): pass
Al utilizar with open("myfile.txt", "r+") as my_file:
, llego ceros extraños en myfile.txt
, sobre todo porque yo estoy leyendo el archivo primero. Para que funcione, primero tuve que cambiar el puntero de my_file
al comienzo del archivo con my_file.seek(0)
. Entonces podría hacer my_file.truncate()
para borrar el archivo.
- 1. Cómo borrar el texto existente en un archivo
- 2. Perl: Borrar el contenido del archivo y el archivo abierto en modo append
- 3. Cómo borrar el archivo de texto de carga en el lado del servidor (C#)
- 4. Cómo supervisar el archivo de texto y salir continuamente del contenido en un cuadro de texto
- 5. ¿Cómo borrar el contenido de un IFRAME?
- 6. Borrar el color del botón en el campo de texto
- 7. Borrar contenido de UIScrollView
- 8. Cómo borrar el texto en el texto de edición
- 9. ¿Cómo borrar la última línea en un archivo de texto?
- 10. contenido de Compensación de archivo de texto usando C#
- 11. borrar el archivo adjunto
- 12. Borrar contenido de archivos del historial de SVN
- 13. Python ¿Abre un archivo de texto sin borrar todo lo que contiene?
- 14. PHP borrar el contenido de un directorio
- 15. Cómo borrar campo de texto en el foco del campo de texto
- 16. cómo borrar el contenido en la secuencia de cadena.
- 17. Borrar contenido de una columna
- 18. ¿Cómo reemplazar el texto en el archivo de texto usando el script del archivo bat?
- 19. ¿Cómo leer el contenido del archivo desde un archivo?
- 20. Reemplazar el bloque delimitado de texto en el archivo con el contenido de otro archivo
- 21. ¿Cómo borrar hasta el final del delimitador?
- 22. ¿Cómo leer el contenido del archivo en istringstream?
- 23. ¿Cómo puedo obtener el contenido del archivo cargado en php?
- 24. ¿Cómo puedo borrar el contenido de un NSMutableAttributedString?
- 25. Borrar texto seleccionado ComboBox
- 26. ¿Cómo borrar un cuadro de texto en el foco?
- 27. ¿Descifrar el contenido del archivo cifrado?
- 28. cómo extraer el contenido del texto con formato PDF
- 29. ¿Cómo conservar el contenido del portapapeles en Emacs en Windows?
- 30. ¿Cómo borrar el índice del proyecto IntelliJ?
Python _and_ C++? ¿Por qué? Puedes hacerlo en uno y puedes hacerlo en el otro, pero dada la elección, será mucho más fácil con Python. – wilhelmtell
las personas que han dado las respuestas han dicho que no es posible ... ¿así que quieres decirme cómo hacerlo fácilmente en Python? – Hick