read - write csv python
csv.write omitir lĂneas al escribir en csv (3)
Estoy tratando de escribir en un archivo csv a través de la siguiente
file = open(''P:/test.csv'', ''a'')
fieldnames = (''ItemID'', ''Factor'', ''FixedAmount'')
wr = csv.DictWriter(file, fieldnames=fieldnames)
headers = dict((n, n) for n in fieldnames)
wr.writerow(headers)
wr.writerow({''ItemID'':1, ''Factor'': 2, ''FixedAmount'':3})
Sin embargo, cuando miro el archivo csv, la primera fila está vacía, la segunda fila es mi encabezado, la tercera fila está vacía otra vez y la cuarta muestra las entradas 1,2 y 3. ¿Por qué> omite una fila antes? hace una entrada?
EDITAR: utilizando Python 3.2
¿Podría ser que estás abriendo el archivo de salida en el modo de agregar?
file = open(''P:/test.csv'', ''a'')
# ^
En lugar de escribir modo? Si ejecuta el programa varias veces, la salida de cada ejecución estará en ese archivo ...
La solución es especificar el parámetro "lineterminator" en el constructor:
file = open(''P:/test.csv'', ''w'')
fields = (''ItemID'', ''Factor'', ''FixedAmount'')
wr = csv.DictWriter(file, fieldnames=fields, lineterminator = ''/n'')
wr.writeheader()
wr.writerow({''ItemID'':1, ''Factor'': 2, ''FixedAmount'':3})
file.close()
Veinte quatloos dice que se está ejecutando bajo Windows (bueno, cien, dado que su archivo se llama P:/test.csv
). Probablemente estés recibiendo /r
s extra.
[editar]
Está bien, ya que usar el modo binario causa otros problemas, ¿qué tal esto?
file = open(''P:/test.csv'', ''w'', newline='''')