0

我有以下代码用于查询和保存 json 响应。该查询返回给我一个 json 输出,但是当我用我的代码保存它时,我就不能再保留 json 格式了。

file_out='C:\\Users\\ayush488\\Desktop\\annotation_for_new_dataset\\url'+str(cnt)+'.txt'
    cnt=cnt+1

    response=urllib2.urlopen('http://www.diffbot.com/api/article?token='+token+'&url='+url).read()
    with open(file_out,'w') as outfile:
        json.dump(response,outfile)

谁能告诉如何正确保存 json 内容?

这是输出的示例:

"{\"icon\":\"http:\\/\\/open.blogs.nytimes.com\\/favicon.ico\",\"author\":
4

1 回答 1

4

您正在对 JSON 响应进行双重编码。

您正在接收一个字符串值,它json.loads()可以变成 Python 对象。要将响应保存到文件,不要编码,不要解码,只需将其直接保存到文件对象。最有效的方法是使用shutil.copyfileobj()

import shutil

response=urllib2.urlopen('http://www.diffbot.com/api/article?token='+token+'&url='+url).read()
with open(file_out,'w') as outfile:
    shutil.copyfileobj(response, outfile)
于 2013-07-19T21:24:01.627 回答