требуется байтовоподобный объект, а не ошибка 'str', пока json .dump - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь выбросить дикт в файл JSON. Приведенный ниже код работает в python 2, но я получаю вышеупомянутую ошибку при попытке запустить его на python 3.

import json
for terr_item in data:    
    with open( 'influence_data/' + str(terr_item['territory_id']) +'-influence.json','wb') as f:
        json.dump(terr_item,f,ensure_ascii=False,allow_nan=False,indent=4)

РЕДАКТИРОВАТЬ:

Я пытался писать с использованием 'w', но затем я получаю 'Объект типа Int64 не JSON сериализуемый'

1 Ответ

2 голосов
/ 27 февраля 2020

В Python 3, двоичный выходной файл должен получать байтовую строку вместо обычных Python3 строк Unicode.

Здесь у вас нет причин использовать двоичный режим, поэтому вы должны использовать:

with open( 'influence_data/' + str(terr_item['territory_id']) +'-influence.json','w') as f:
    json.dump(terr_item,f,ensure_ascii=False,allow_nan=False,indent=4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...