write read files example create and python csv

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='''')