前回Twythonを使った、OAuth認証、ツイート、検索についての記事を書きました。
今回は実施した検索結果を、JSONファイルに出力→読込を行う方法です。
検索結果をファイル出力して確認したい!とか
検索結果を保存したい!なんてときに有用使えそうです!
単純にJSONファイルの読み書きをしたい場合にも有用です!
検索と結果のJSONファイル出力
検索した結果を、整形した状態で出力します。
「UTF-8」で出力する為、単純に出力するより、若干コードが増えています。
整形と出力は、コチラを参考にしました。
JSONファイルのフォーマットを整えてDumpする
# -*- coding: utf-8 -*- from twython import Twython, TwythonError import json # JSON解析に必要 import codecs # UTF-8でファイルIOするために必要 APP_KEY = "app key" APP_SECRET = "app secret" # OAuth2(AccessTokenの取得) twitter = Twython(APP_KEY, APP_SECRET, oauth_version = 2) ACCESS_TOKEN = twitter.obtain_access_token() twitter = Twython(APP_KEY, access_token=ACCESS_TOKEN) # 検索 result = twitter.search(q="python", result_type="popular") # ファイルオープン f = codecs.open("result.json", "w", 'utf-8') # JSONをダンプ(ファイル出力) # arg3~のオプションを入れることで、整形した状態で出力可能 json.dump(result, f, ensure_ascii=False, indent=4, sort_keys=True, separators=(',', ': '))
ここでは前回の記事同様、OAuth2で検索していますが、OAuth1で実施してもOKです。
出力したファイルはコチラ。
JSONファイルを読み込む
出力済みのJSONファイルを読み込みます。
「UTF-8」で出力したので、こちらも「UTF-8」で読み込みを行います。
# -*- coding: utf-8 -*- import json import codecs # jsonのロード f = codecs.open("result.json", "r", 'utf-8') data = json.load(f)
json.load()の結果は辞書型で返ってきます。
なので、JSONファイルのKeyを連想配列で指定してあげると、簡単に中身が取り出せます。
めっちゃ便利!
data['search_metadata']
出力
{'completed_in': 0.031, 'count': 15, 'max_id': 0, 'max_id_str': '0', 'query': 'python', 'since_id': 0, 'since_id_str': '0'}
関数化してみた
面倒なので関数化してみました。
# -*- coding: utf-8 -*- import json # JSON解析に必要 import codecs # UTF-8でファイルIOするために必要 # JSONファイルへの出力 # # 辞書型のデータを、UTF-8の整形済みJSONファイルとして出力します。 # param: fileName 出力ファイル名 # param: data 出力データ(辞書型) def outputJson(fileName, data): # ファイルオープン f = codecs.open(fileName, "w", 'utf-8') # JSONをダンプ(ファイル出力) # arg3~のオプションを入れることで、整形した状態で出力可能 json.dump(data, f, ensure_ascii=False, indent=4, sort_keys=True, separators=(',', ': ')) # JSONファイルの入力 # # UTF-8のJSONファイルを読み込み、辞書型のデータとして返します。 # param: fileName 入力ファイル名 # return: 入力データ(辞書型) def inputJson(fileName): # jsonのロード f = codecs.open(fileName, "r", 'utf-8') data = json.load(f) return data # 使用例 d = inputJson("result.json") # 入力 outputJson("res2.json", d) # 出力
あとがき
やり方がわかってしまえば、かなりシンプルに入出力ができます。
これがPythonのチカラか……
シンプルに実装できるうえ、操作しやすい形でデータが手に入るとか至れり尽くせりですね!
だんだんPythonがすきになってきた。