[英]argument of type 'int' is not iterable - Python error while writing to another file
[英]Python Type Error While Writing a json File
我正在制作一本關於我們大都市區的字典。 結構是這樣的:
{
"Abilene": {
"allCities": [
"Abilene"
],
"latitude": "30.1588129",
"longName": "Abilene, TX Metropolitan Statistical Area",
"longitude": "-85.6602058",
"primaryState": "TX",
"states": [
"TX"
]
},
我想把這個字典寫成一個以unicode編碼的json文件,所以我導入了unicode文字和io包:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import io
from os.path import exists
import json
import unicodedata
我在unicode字符串中設置文字和值的鍵。
metropolitans[primaryCity] = {'allCities':allCities, 'longName':longName, 'allStates':states, 'primaryState':states[0]}
metropolitans[primaryCity]['longitude'] = unicode(str(coordinates[primaryCity]['longitude']), encoding = 'utf-8')
然后,我想在unicode中將metropolitans保存到json文件中。
with io.open('results.json', 'w', encoding='utf-8') as results:
results.truncate()
json.dump(metropolitans, results, ensure_ascii=False, encoding='utf-8', results, indent=2, sort_keys=True)
而且,我收到此錯誤:
File "readMetropolitan.py", line 190, in <module>
json.dump(metropolitans, results, indent=2, sort_keys=True)
File "/usr/lib/python2.7/json/__init__.py", line 190, in dump
fp.write(chunk)
TypeError: write() argument 1 must be unicode, not str
這是為什么? 我知道我可以用'wb'完成一個文件的編寫,但我想用unicode編寫這個文件。
如果我使用dumps()和write(),我可以寫這個文件:
s = json.dumps(metropolitans, ensure_ascii=False, encoding='utf-8', indent=2, sort_keys=True)
results.write(s)
您在錯誤代碼上方發布的代碼甚至沒有運行,因為錯誤回溯表示在文件readMetropolitan.py中第190行運行此行時發生錯誤:
json.dump(metropolitans, results, indent=2, sort_keys=True)
您發布的代碼是:
json.dump(metropolitans, ensure_ascii=False, encoding='utf-8', results, indent=2, sort_keys=True)
他們絕對不一樣。 也許代碼是在編輯之前運行的?
錯誤回溯的前兩行專門說明了觸發錯誤的原因。
File "readMetropolitan.py", line 190, in <module>
json.dump(metropolitans, results, indent=2, sort_keys=True)
File "/usr/lib/python2.7/json/__init__.py", line 190, in dump
fp.write(chunk)
TypeError: write() argument 1 must be unicode, not str
另外,在關鍵字參數之后不能有位置參數results
。 因此,它應該是:
json.dump(metropolitans, results, ensure_ascii=False, encoding='utf-8', indent=2, sort_keys=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.