1. ホーム
  2. python

[解決済み] PythonでcurlからJSONファイルを読み込む

2022-02-14 15:40:43

質問

Pythonで次のようなコマンドがあるとします。

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

今やっているのは、curlしたところからGETしてresult.jsonに結果を格納し、それを開いて読むというものです。ローカルに保存せずに直接読む方法はないだろうか?

解決方法は?

標準ライブラリ( json &です。 urllib2 ) を使って、外部コマンドを使用しないようにします。

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

しかし、私がお勧めするのは リクエスト を使えば、コードを簡単にすることができます。以下は、ドキュメントにあるサンプルです。

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)