![](/img/trans.png)
[英]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.