cómo agregar líneas a un archivo existente usando python


Ya he creado un archivo txt usando python con unas pocas líneas de texto que serán leídas por un simple programa. Sin embargo, estoy teniendo algunos problemas para reabrir el archivo y escribir líneas adicionales en el archivo en una parte posterior del programa. (Las líneas se escribirán a partir de la entrada del usuario obtenida más adelante.)

with open('file.txt', 'w') as file:
    file.write('input')

Esto es asumiendo que 'archivo.txt' ha sido abierto antes y escrito en. Sin embargo, al abrir esto por segunda vez, con el código que tengo actualmente, tengo que borrar todo eso fue escrito antes y reescribir la nueva línea. ¿Hay alguna manera de evitar que esto suceda (y posiblemente reducir el código excesivo de abrir el archivo de nuevo)?

 35
Author: user1246462, 2012-05-17

4 answers

Si desea agregar al archivo, ábralo con 'a'. Si desea buscar a través del archivo para encontrar el lugar donde debe insertar la línea, use 'r+'. (docs )

 45
Author: Dougal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-17 17:49:06

Abra el archivo para 'append' en lugar de 'write'.

with open('file.txt', 'a') as file:
    file.write('input')
 34
Author: Jeff L,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-17 17:50:19

Uso 'a', 'a' significa append. Cualquier cosa escrita en un archivo abierto con el atributo 'a' se escribe al final del archivo.

with open('file.txt', 'a') as file:
    file.write('input')
 9
Author: Ashwini Chaudhary,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-26 18:13:21

Las respuestas anteriores son correctas, pero para agregar los datos como una nueva línea, en lugar de agregarlos al final de la última línea del archivo, use lo siguiente:

with open('file.txt', 'a') as file:
    file.writelines('input')
 6
Author: v4gil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-07 05:25:33