Estoy tratando de escribir una secuencia de comandos de Python para actualizar el encabezado (solo la primera línea) de algunos archivos enormes, pero como el nuevo encabezado no es necesario que tenga el mismo tamaño (en bytes) que el original, ¿podría haberlo? cambiar el encabezado sin tocar el resto del archivo enorme? o tengo que leerlos todos y escribirlos de nuevo en el archivo?

7
John 30 jun. 2011 a las 20:04

3 respuestas

La mejor respuesta

No, las únicas operaciones que puede realizar en los archivos sin tocar el archivo completo son truncamiento, reemplazo del mismo tamaño y anexos.

Sin embargo, puede almacenar en búfer partes relativamente pequeñas del archivo y escribirlas después de haber leído todos los datos que actualmente residen en la nueva posición, para evitar el agotamiento de la memoria. Si la velocidad es un problema, considere usar mmap.

4
phihag 30 jun. 2011 a las 16:50

No estoy familiarizado con ningún sistema operativo que le permita eliminar fragmentos arbitrarios de un archivo, por lo que Python no puede darle esa característica. Me temo que estás atrapado tocando el resto del enorme archivo.

1
Gabe 30 jun. 2011 a las 16:10

Tendrá que leer y escribir todo el archivo, ya que el resto del contenido del archivo deberá moverse para acomodar las diferencias en el tamaño del encabezado.

0
João Neves 30 jun. 2011 a las 16:10