1. 程式人生 > >python中的JSON(1)

python中的JSON(1)

welcome 定義 ack () found 存儲 remember nbsp python程序

很多程序都要求用戶輸入某種信息,

例如:

讓用戶存儲遊戲首選項或提供要可視化的數據,程序把用戶的信息存儲在列表和字典等數據結構中,

用戶關閉程序時,我們幾乎總要保存他們提供的信息;

如何保存——

一種簡單的方式是使用模塊json來存儲數據。

JSON(JavaScript Object Notation)

模塊json讓我們能夠將簡單的python數據結構轉儲到文件中,並在程序再次運行時加載該文件中的數據。

不僅如此,JSON還可以讓我們在python程序之間分享數據,更重要的是JSON數據格式並非Python專用的,

JSON格式的數據可以與其他程序員使用其他腳本存儲的方式互通。

json.dump() 保存文件

範例:

#!/usr/bin/env python

#filename = wr_num.py

import json

numbers = [1,2,3,4,5,6,7]

file_name = ‘numbers.json‘

with open(file_name, ‘w‘) as f_obj:

json.dump(numbers , f_obj)

這段代碼塊中,首先導入了模塊json,然後配置了一個list

在 ① 處,指定了這個要將這個列表存儲的文件名:number.json

在 ② 處,通過w的方式打開文件,

在 ③ 處,通過函數json.dump()將數字列表存儲到文件中

效果:

[[email protected] Alben-PY]# ./wr_num.py
[[email protected] Alben-PY]# more numbers.json
[1, 2, 3, 4, 5, 6, 7]

json.load() 讀取文件

#!/usr/bin/env python

#filename = rd_num.py

import json

"""導入模塊JSON"""

file = ‘numbers.json‘

"""定義文件"""

with open(file) as f_obj:

"""打開文件"""

numbers = json.load(f_obj)

#使用函數json.load()讀取文件內容,並保存為變量 numbers

print(numbers)

效果:

[[email protected] Alben-PY]# ./rd_num.py
[1, 2, 3, 4, 5, 6, 7]
[[email protected] Alben-PY]#

小測試:

編寫一個腳本,含如下功能

用戶首次打開,提示輸入名字,並告知用戶該程序有記憶功能,下次打開可以直接問好。

代碼:

#!/usr/bin/env python

import json

file = ‘greet_name.json‘

#定義存儲名字的文件名

try:

with open(file) as f_obj:

username = json.load(f_obj)

except FileNotFoundError:

#如果文件不存在,默認會有一個TraceBack:FileNotFoundError#

#使用except後可以取消TraceBack,同時允許except中的代碼塊#

username = input("What is your name? \n:")

with open(file ,‘w‘) as f_obj:

json.dump(username,f_obj)

print("We‘ll remember you when you come back, " + username + ‘!‘)

#這個代碼塊中就是與用戶進行交互,要求輸入名字

else:

print("Welcome back, " + username +‘!‘)

#如果文件能夠順利打開,並且json.load()函數能夠讀取內容,則運行這段print#

效果如下:

[[email protected] Alben-PY]# ./rem_name.py
What is your name?
:alben
We‘ll remember you when you come back, alben!
[[email protected] Alben-PY]# ./rem_name.py
Welcome back, alben!
[[email protected] Alben-PY]#

可以看到,第一次運行的時候,會提示輸入名字,

而第二次運行就直接welcome back了。這是因為第一次運行後生成了文件 greet_name.json

[[email protected] Alben-PY]# ll greet*
-rw-r--r--. 1 root root 7 May 15 08:01 greet_name.json

python中的JSON(1)