python 儲存json資料

2021-08-22 11:57:30 字數 4404 閱讀 3179

本篇我們將學習簡單的json資料的儲存,首先我們需要引入json模組:

import json
這裡我們模擬乙個常見常見,我們讓使用者輸入使用者名稱、密碼,在密碼輸入完成後提示使用者再次輸入密碼來確認自己的輸入,如果兩次密碼一致,那麼我們將使用者名稱和密碼以json格式寫入檔案,否則提示使用者再次輸入密碼。

name = input("please enter your name:")

password = input("please enter your password:")

confirm_password = input("confirm your password:")

while password != confirm_password:

print("input password inconsistencies,please try again")

password = input("please enter your password:")

confirm_password = input("confirm your password:")

我們執行下**確保我們的準備工作沒有問題:

ok,我們可以通過使用者輸入拿到使用者名稱和密碼,接下來,我們就需要將兩者以json格式存入檔案了。

首先,我們將我們的輸入轉化為json物件:

user_info = json.dumps(, sort_keys=true, indent=4, ensure_ascii=false)

print(user_info)

這裡我們使用了json.dumps函式,該函式 用於將 python 物件編碼成 json 字串。

語法:

def dumps(obj, *, skipkeys=false, ensure_ascii=true, check_circular=true,         allow_nan=true, cls=none, indent=none, separators=none,         default=none, sort_keys=false, **kw) inferred type: (obj: any, any, skipkeys: bool, ensure_ascii: bool, check_circular: bool, allow_nan: bool, cls: any, indent: any, separators: any, default: any, sort_keys: bool, kw: dict[str, any]) -> str
其中sort_keys是用來指定在json格式的物件裡面是否按照key的名稱來進行排序,indent引數則指定縮排的空格數目。

最後的輸入格式如下:

那麼接下來我們就將這個json物件寫入到檔案中去:

with open('user_info.json', 'w', encoding='utf-8') as json_file:

json.dump(user_info, json_file, ensure_ascii=false)

print("write json file success!")

這裡我們需要學習乙個函式json.dump:

def dump(obj, fp, *, skipkeys=false, ensure_ascii=true, check_circular=true,         allow_nan=true, cls=none, indent=none, separators=none,         default=none, sort_keys=false, **kw) inferred type: (obj: any, fp: , any, skipkeys: bool, ensure_ascii: bool, check_circular: bool, allow_nan: bool, cls: any, indent: any, separators: any, default: any, sort_keys: bool, kw: dict[str, any]) -> none
這個函式有兩個引數是我們必須要填寫的:obj(我們要儲存的資料), fp(檔案控制代碼,也就是我們要存在那個檔案裡面)。

ensure_ascii=false這個引數是處理我們希望在json物件裡面可以包含中文的場景

false, then

the strings written to fp can contain non-ascii characters

如果不指定ensure_ascii=false,那麼當我們的資料裡面包含中文的時候:

會有如上的顯示內容。

我們執行程式,依次輸入使用者名稱和密碼:

please enter your password:us

confirm your password:us

write json file success!

process finished with

exit code 0

然後我們看下文字檔案中的內容:

接下來我們就需要學習一下怎麼讀取json格式的內容了。

with

open('user_info.json', 'r', encoding='utf-8') as json_file:

data = json.load(json_file)

print(data)

讀取json資料需要使用json.load函式:

def load(fp, *, cls=none, object_hook=none, parse_float=none,         parse_int=none, parse_constant=none, object_pairs_hook=none, **kw) inferred

type: (fp: , any, cls: any, object_hook: any, parse_float: any, parse_int: any, parse_constant: any, object_pairs_hook: any, kw: dict[str, any]) -> any

這裡我們需要提供乙個引數fp,也就是我們要操作的檔案控制代碼。

程式執行輸出:

我們可以列印一下json.load返回的是什麼型別的:

print(type

(data))

輸出:

可見,這是乙個字串,這是為什麼呢?難道不應該返回的是python對應的物件嗎?

在上面的**中我們在寫入檔案前面呼叫過:

user_info = json.dumps(, ensure_ascii=false)
這一行**,大家還記得吧,它返回的是乙個json字串,所以上面的例子中我們需要使用json.loads重新反序列化為python物件,這一點大家留意一下,上面的例子我們是為了給大家演示json.loads的相關用法,使用如下:

data = json.loads(data)

print(type

(data))

print(data['username'])

如果沒有這行**,那麼 data = json.load(json_file)返回的就是我們自己組織的資料結構了,如果還是這種格式,那麼返回就是乙個字典物件。

下面我們在通過乙個list來看一下:

data = [1,2,3,4,5]

with open('user_info.json', 'w', encoding='utf-8') as json_file:

json.dump(data, json_file, ensure_ascii=false)

with open('user_info.json', 'r', encoding='utf-8') as json_file:

data = json.load(json_file)

print(type

(data))

print(data)

執行程式:

[1, 2, 3, 4, 5]

python儲存資料json

python儲存資料json 使用json模組來儲存資料,模組json讓你能夠將簡單的python資料結構儲存到檔案中,並在程式再次執行時載入檔案中的資料,也可以使用json在程式之間分析資料,更重要的是,json資料格式並非python專用的,其他程式語言也可以用。json.dump 儲存資料,接...

python爬蟲資料儲存JSON儲存

encoding utf 8 import re import requests import json from requests.exceptions import requestexception def get open page url try 請求頭 headers 使用localhos...

python儲存json資料,存入txt檔案

最近用python寫資料分析,然後想著我如果每次跑程式都需要一次api請求有點不太好,畢竟很多 都有限制。然後我就想著把請求的json資料,儲存到本地,沒有實時資料的需求時就使用原始資料,如果有的話就跑一下程式。下面是我的乙個示例,使用的是json的dumps方法,將dic轉化為字串格式 impor...