許多程式都是要求使用者輸入某種資訊,如讓使用者儲存遊戲首選項或提供要視覺化的資料。一種簡單的方法是使用模組json來儲存資料。
模組json讓簡單的python資料結構轉儲到檔案中,並在程式再次執行時載入該檔案中的資料。話可以分享資料。
1.使用json.dump()和json.load()
使用json.dump()來儲存一組數字,接受兩個實參:要儲存的書記以及可用於儲存資料的檔案物件。
json.dump(檔名,檔案所在位置)
如下所示:
import json
numbers = [2,5,4,6,15,45]
filename = 'numbers.json'
with open(filename,'w') as fishc:
json.dump(numbers,fishc)
先導入模組json,再建立乙個數字列表。
並且指定了將數字列表儲存的檔名。
通常將擴充套件名為.json來指出檔案儲存的資料為json格式。
然後用寫入模式『w』開啟這個檔案。
使用json.dump()函式將數字列表儲存到上述檔案中去。
如下是永json.load()函式將檔案中的內容讀取出來:
import json
numbers = [2,5,4,6,15,45]
filename = 'numbers.json'
with open(filename) as fishc:
numbers = json.load(fishc)
print(numbers)
用讀取的方式將檔案讀取出來,結果如下所示:
[2, 5, 4, 6, 15, 45]
2.儲存和讀取使用者生成的資料
對於使用者生成的資料,使用json儲存有很大的益處。即使程式停止後,使用者輸入的資訊還是存在,而不會因為程式的關閉而丟失。
如下所示:
import json
usename = input('enter your name: ')
filename = 'usename.json'
with open(filename,'w') as fishc:
json.dump(usename,fishc)
print('i will call you ' + usename + '!')
enter your name: kobe
i will call you kobe!
讀取之前輸入的檔案:
import json
filename = 'usename.json'
with open(filename) as fishc:
usename = json.load(fishc)
print('i will call you ' + usename + '!')
輸出結果為:
i will call you kobe!
3.重構
**可以正確執行,但可以進一步的改進——將**劃分為一系列完成具體工作的函式。這就叫做重構。
import json
def get_stored_username():
filename = 'username.json'
try:
with open(filename) as fishc:
username = json.load(fishc)
except filenotfounderror:
return none
else:
return username
def greet_user():
username = get_stored_username()
if username:
print('welcome back ' + username + '!')
else:
username = input('what is your name?')
filename = 'username.json'
with open(filename,'w') as fishc:
json.dump(username,fishc)
print('we will remember you when you come back, ' + username +'.')
greet_user()
import json
def get_stored_username():
filename = 'username.json'
try:
with open(filename) as fishc:
username = json.load(fishc)
except filenotfounderror:
return none
else:
return username
def get_new_username():
username = input('enter your name: ')
filename = 'username.json'
with open(filename,'w') as fishc:
json.dump(username,fishc)
return username
def greet_user():
username = get_stored_username()
if username:
print('welcome back ' + username + '!')
else:
username = get_new_username()
print('we will remember you when you come back, ' + username +'.')
greet_user()
輸出結果如下:
enter your name: allen
we will remember you when you come back, allen.
>>>
***************==== restart: h:\python\fishc\divisionn.py ***************====
welcome back allen!
第九周總結
二 從 activitythread main 到 activity oncreate handler 訊息機制 handler 訊息機制除了 handler 本身外,還包含 looper messagequeue message,訊息機制需要有訊息佇列 訊息迴圈 訊息處理 如下 handler 傳...
第九周總結
這個作業屬於那個課程 c語言程式設計ii 這個作業要求在 我在這個課程的目標是 進一步掌握結構的運用 這個作業在那個具體方面幫助我實現目標 更加熟悉結構的基本流程與陣列的使用 參考文獻 c語言書與網上的查詢 本題要求實現乙個根據學生成績設定其等級,並統計不及格人數的簡單函式。int set grad...
第九大周總結
第九大周總結又開始製作了,這說明又過去了乙個大周。按照慣例,先來做一下常規的瞎bb,這個大周沒什麼稀奇事,要說有,也就只是沒考試 天大的好訊息 然後主講了搜尋的dfs和bfs,以及動態規劃的入門 說好的入門呢,根本就入不了門好嗎 然後來看看這個大周找到的一些bug 1.打字,這都已經是老生常談的事情...