2012-12-25 11 views
5

Używanie Pythona 3.2 64-bitowego na Windows 7 64-bit.Duża lista zawierająca dict, tekst, datetime i ints JSON daje "TypeError: 'str' nie obsługuje interfejsu bufora"

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

daje błąd:

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 

nie mam pojęcia, co się dzieje źle. Korzystanie z marynarki działa dobrze! Ale muszę użyć JSON ... Wskazówki dotyczące znajdowania problemu? Lista jest duża. Zapisanie go przy użyciu kiszonki zajmuje 56 MB.

+0

Co to jest "dictio"? – ThiefMaster

Odpowiedz

16

Otwierasz plik do pisania binarnego. Otwórz go, używając "w" tylko jako trybu.

+0

Dzięki, miałem ten sam problem. Jednak nie jest dla mnie oczywiste, dlaczego tryb binarny jest problemem. Pochodzę z tła języka C i stworzyłem zwyczaj otwierania plików w trybie binarnym (więc nie otrzymuję żadnych fałszywych transformacji, których nie chcę). Czy ktoś może wyjaśnić? – jlh

+0

Jeśli otworzysz plik w trybie binarnym, powinieneś zapisać bajty w pliku. Jeśli otworzysz go bez flagi binarnej, możesz zapisać dane w Unicode. – Natim

Powiązane problemy