json.dump unicode from unicode in Python 2?- 类型错误



Traceback

    dump({'foo':{'bar': 5}}, getwriter('utf8')(f), ensure_ascii=False, encoding='utf8')
  File "/usr/lib/pypy/lib-python/2.7/json/__init__.py", line 196, in dump
    fp.write(chunk)
  File "/usr/lib/pypy/lib-python/2.7/codecs.py", line 370, in write
    self.stream.write(data)
TypeError: unicode argument expected, got 'str'

法典

from __future__ import unicode_literals
from codecs import getwriter
from io import open
from os import path
from tempfile import gettempdir
from json import dump
with open(path.join(gettempdir(), 'bar'), 'wt', encoding='utf8') as f:
    dump({'foo':{'bar': 5}}, getwriter('utf8')(f), ensure_ascii=False,
         encoding='utf8')

(与 IDEone 一起运行(

这很奇怪,将导入从:

from io import open

自:

from codecs import open

做到了。尽管 https://stackoverflow.com/a/844443 说第一个是新的最佳实践:\

最新更新