Python3 物件儲存到本地與恢復演示
阿新 • • 發佈:2018-12-18
在做網路請求實驗的時候,假如請求的資料量較大,每次修改程式碼,再瀟灑的啪一下,半天結果才出來,且不說浪費流量,多次的長時間的等待也會令我們感到疲憊,所以我想到了neng能不能將請求到的資料先存到檔案裡,下次執行再從檔案裡恢復,這樣就快多了,好了也不多說了,直接上菜:
import requests import pygal import os from pygal.style import LightColorizedStyle as LCS,LightenStyle as LS # import json import simple_pickle.utils as spick filename='my_save' # 將請求的資料本地化儲存 if os.path.exists(filename) ==False: url='https://api.github.com/search/repositories?q=language:python&sort=stars' r=requests.get(url) spick.write_pickle(r, filename) print('First Request...') else: r = spick.read_pickle(filename) print('Read from local.') print('Status code:',r.status_code) #將API響應儲存在一個變數中 response_dict=r.json() # print(response_dict.keys()) print('Total repositories:',response_dict['total_count']) #探索有關倉庫的資訊 repo_dicts=response_dict['items'] # print('Repositories returned:',len(repo_dicts)) #研究第一個倉庫 repo_dict=repo_dicts[0] # print('\nKeys:',len(repo_dict)) # for key in sorted(repo_dict.keys()): # print(key) # print('\nSelected information about first repository:') # for repo_dict in repo_dicts: # print('Name:',repo_dict['name']) # print('Owner:',repo_dict['owner']['login']) # print('Stars:',repo_dict['stargazers_count']) # print('Repository:',repo_dict['html_url']) # print('Created:',repo_dict['created_at']) # print('Updated:',repo_dict['updated_at']) # print('Description:',repo_dict['description']) # print() names,stars=[],[] for repo_dict in repo_dicts: names.append(repo_dict['name']) stars.append(repo_dict['stargazers_count']) #視覺化 my_style=LS('#333366',base_style=LCS) chart=pygal.Bar(style=my_style,x_label_rotation=45,show_legend=False) chart.title='Most-Starred Python Projects on Github' chart.x_labels=names chart.add('',stars) chart.render_to_file('python_repos.svg')