1. 程式人生 > >Python3 物件儲存到本地與恢復演示

Python3 物件儲存到本地與恢復演示

       在做網路請求實驗的時候,假如請求的資料量較大,每次修改程式碼,再瀟灑的啪一下,半天結果才出來,且不說浪費流量,多次的長時間的等待也會令我們感到疲憊,所以我想到了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')