Wie kann ich verhindern, dass csv.DictWriter() oder writerow() Rundung meiner schwimmt?

Ich habe ein Wörterbuch, das ich schreiben will in eine csv-Datei, aber die schwimmt im Wörterbuch abgerundet sind, wenn ich Sie Schreibe in die Datei. Ich will, dass die maximale Genauigkeit.

Wo kommt die Rundung auftreten, und wie kann ich es verhindern?

, Was ich Tat

Folgte ich dem DictWriter Beispiel hier und ich bin mit Python 2.6.1 auf Mac (10.6 - Snow Leopard).


# my import statements
import sys
import csv

Hier ist, was mein Wörterbuch (d) enthält:

>>> d = runtime.__dict__
>>> d
{'time_final': 1323494016.8556759,
'time_init': 1323493818.0042379,
'time_lapsed': 198.85143804550171}

Die Werte sind in der Tat schwimmt:

>>> type(runtime.time_init)
<type 'float'>

Dann richte ich mein writer und schreiben der header und Werte:

f = open(log_filename,'w')
fieldnames = ('time_init', 'time_final', 'time_lapsed')
myWriter = csv.DictWriter(f, fieldnames=fieldnames)
headers = dict( (n,n) for n in fieldnames )
myWriter.writerow(headers)
myWriter.writerow(d)
f.close()

Aber wenn ich einen Blick in die Ausgabe-Datei, bekomme ich gerundete zahlen (D. H., unbelegt):

time_init,time_final,time_lapsed
1323493818.0,1323494016.86,198.851438046

< EOF >

  • Nicht Teil des Problems, aber in Python 2.x immer öffnen von csv-Dateien in Binär - Modus ('rb' oder 'wb')
  • Vielen Dank für das heads-up und für die überprüfung meine Frage. +1
InformationsquelleAutor aDroid | 2011-12-10
Schreibe einen Kommentar