2012-12-25 10 views
5

Utilizzo di Python 3.2 64 bit su Windows 7 a 64 bit.JSON scarica una grande lista contenente dict, text, datetime e ints dà "TypeError: 'str' non supporta l'interfaccia buffer"

f = open("raw_data/results.json", "wb") 
json.dump(dictio, f) 
f.close() 

Dà errore:

Traceback (most recent call last): 
    File ".\calc_stats_friendly_data.py", line 22, in <module> 
    main() 
    File ".\calc_stats_friendly_data.py", line 18, in main 
    json.dump(races, f) 
    File "C:\Python32\lib\json\__init__.py", line 179, in dump 
    fp.write(chunk) 
TypeError: 'str' does not support the buffer interface 

Non ho idea di che cosa va storto. Usare pickle funziona bene! Ma devo usare JSON ... Suggerimenti per trovare il problema? La lista è grande. Salvandolo con pickle ci vogliono 56 MB.

+0

Che cos'è 'dictio'? – ThiefMaster

risposta

16

Stai aprendo il file per la scrittura binaria. Aprilo usando "w" solo come modalità.

+0

Grazie, ho avuto lo stesso problema. Tuttavia per me è molto ovvio perché la modalità binaria è un problema. Vengo da uno sfondo C e ho preso l'abitudine di aprire sempre i file in modalità binaria (quindi non ottengo alcuna trasformazione spuria che non voglio). Qualcuno può spiegare? – jlh

+0

Se si apre il file in modalità binaria, è necessario scrivere byte nel file. Se lo apri senza il flag binario puoi scrivere dati unicode. – Natim

Problemi correlati