ejemplos - agregar una nueva fila al archivo csv python viejo
django (4)
¿Estás abriendo el archivo con el modo ''a'' en vez de ''w''?
Consulte Leer y escribir archivos en los documentos de python
7.2. Leer y escribir archivos
open () devuelve un objeto de archivo, y se usa más comúnmente con dos argumentos: abrir (nombre de archivo, modo).
>>> f = open(''workfile'', ''w'') >>> print f <open file ''workfile'', mode ''w'' at 80a0960>
El primer argumento es una cadena que contiene el nombre del archivo. El segundo argumento es otra cadena que contiene algunos caracteres que describen la forma en que se usará el archivo. modo puede ser ''r'' cuando el archivo solo se leerá, ''w'' solo para escritura (se borrará un archivo existente con el mismo nombre) y ''a'' abre el archivo para agregar; cualquier dato escrito en el archivo se agrega automáticamente al final. ''r +'' abre el archivo tanto para leer como para escribir. El argumento de modo es opcional; ''r'' se asumirá si se omite.
En Windows, ''b'' agregado al modo abre el archivo en modo binario, por lo que también hay modos como ''rb'', ''wb'' y ''r + b''. Python en Windows hace una distinción entre archivos de texto y binarios; los caracteres de fin de línea en los archivos de texto se modifican automáticamente cuando se leen o escriben los datos. Esta modificación entre bastidores de los datos de archivos está bien para los archivos de texto ASCII, pero dañará los datos binarios de esa manera en los archivos JPEG o EXE. Tenga mucho cuidado de usar el modo binario al leer y escribir dichos archivos. En Unix, no está de más agregar una ''b'' al modo, por lo que puedes usarla independientemente de la plataforma para todos los archivos binarios.
Estoy tratando de agregar una nueva fila a mi viejo archivo csv. Básicamente, se actualiza cada vez que ejecuto el script de Python.
En este momento estoy almacenando los valores de las viejas filas csv en una lista y luego borro el archivo csv y lo vuelvo a crear con el nuevo valor de la lista.
Quería saber si hay alguna forma mejor de hacerlo.
Prefiero esta solución usando el módulo csv
de la biblioteca estándar y la declaración with
para evitar dejar el archivo abierto.
El punto clave es usar ''a''
para agregar cuando abre el archivo.
import csv
fields=[''first'',''second'',''third'']
with open(r''name'', ''a'') as f:
writer = csv.writer(f)
writer.writerow(fields)
Puede experimentar nuevas líneas superfluas en Windows. Puede intentar evitarlos usando ''ab''
lugar de ''a''
.
# I like using the codecs opening in a with
field_names = [''latitude'', ''longitude'', ''date'', ''user'', ''text'']
with codecs.open(filename,"ab", encoding=''utf-8'') as logfile:
logger = csv.DictWriter(logfile, fieldnames=field_names)
logger.writeheader()
# some more code stuff
for video in aList:
video_result = {}
video_result[''date''] = video[''snippet''][''publishedAt'']
video_result[''user''] = video[''id'']
# the line below should be one line, the editor on this
# site...
video_result[''text'']=video[''snippet'']
[''description''].encode(''utf8'')
logger.writerow(video_result)
fd = open(''document.csv'',''a'')
fd.write(myCsvRow)
fd.close()
Abrir un archivo con el parámetro ''a''
permite agregarlo al final del archivo en lugar de simplemente sobrescribir el contenido existente. Trata eso.