假设我在Python中有一个看起来像的命令

command = 'curl ...etc" > result.json'
subprocess.call(command, shell = True)
file = open("result.json").read()

现在执行的操作是从我 curl 的地方获取GET并将结果存储在result.json中,然后将其打开以进行读取。我想知道是否有一种方法可以直接读取而无需先存储到本地吗?

最佳答案

您可以使用stdlib(jsonurllib2)避免使用外部命令:

import json
import urllib2
url = "http://httpbin.org/get"
response = urllib2.urlopen(url)
data = response.read()
values = json.loads(data)

但是我建议使用requests简化您的代码。这里是文档的示例:
import requests
r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
r.status_code
200
r.headers['content-type']
'application/json; charset=utf8'
r.encoding
'utf-8'
r.text
u'{"type":"User"...'
r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}

Python 3更新

请考虑在Python3中urllib2不再存在,您应该使用标准库中的urllib
req = urllib.request.Request(url)
response = urllib.request.urlopen(req)
data = response.read()
values = json.loads(data)

关于python - 在Python中从curl读取JSON文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22366748/

10-11 12:20