电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python 存儲(chǔ)json數(shù)據(jù)的操作

瀏覽:44日期:2022-06-20 11:16:54

本篇我們將學(xué)習(xí)簡(jiǎn)單的json數(shù)據(jù)的存儲(chǔ)

首先我們需要引入json模塊:

import json

這里我們模擬一個(gè)常見(jiàn)常見(jiàn),我們讓用戶(hù)輸入用戶(hù)名、密碼,在密碼輸入完成后提示用戶(hù)再次輸入密碼來(lái)確認(rèn)自己的輸入,如果兩次密碼一致,那么我們將用戶(hù)名和密碼以json格式寫(xiě)入文件,否則提示用戶(hù)再次輸入密碼。

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:')

我們運(yùn)行下代碼確保我們的準(zhǔn)備工作沒(méi)有問(wèn)題:

python 存儲(chǔ)json數(shù)據(jù)的操作

ok,我們可以通過(guò)用戶(hù)輸入拿到用戶(hù)名和密碼,接下來(lái),我們就需要將兩者以json格式存入文件了。

首先,我們將我們的輸入轉(zhuǎn)化為json對(duì)象:

user_info = json.dumps({’username’: name, ’password’: password}, sort_keys=True, indent=4, ensure_ascii=False)print(user_info)

這里我們使用了json.dumps函數(shù),該函數(shù) 用于將 Python 對(duì)象編碼成 JSON 字符串。

語(yǔ)法:

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是用來(lái)指定在json格式的對(duì)象里面是否按照key的名稱(chēng)來(lái)進(jìn)行排序,indent參數(shù)則指定縮進(jìn)的空格數(shù)目。

最后的輸入格式如下:

{ 'password': 'us', 'username': 'us'}

那么接下來(lái)我們就將這個(gè)json對(duì)象寫(xiě)入到文件中去:

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!')

這里我們需要學(xué)習(xí)一個(gè)函數(shù)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: {write}, 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

這個(gè)函數(shù)有兩個(gè)參數(shù)是我們必須要填寫(xiě)的:obj(我們要存儲(chǔ)的數(shù)據(jù)), fp(文件句柄,也就是我們要存在那個(gè)文件里面)。

ensure_ascii=False這個(gè)參數(shù)是處理我們希望在json對(duì)象里面可以包含中文的場(chǎng)景

If ensure_ascii is false, then the strings written to fp can contain non-ASCII characters if they appear in strings contained in obj. Otherwise, all such characters are escaped in JSON strings.

如果不指定ensure_ascii=False,那么當(dāng)我們的數(shù)據(jù)里面包含中文的時(shí)候:

{'username': 'zhangu4e09', 'password': 'ddd'}

會(huì)有如上的顯示內(nèi)容。

我們運(yùn)行程序,依次輸入用戶(hù)名和密碼:

please enter your name:usplease enter your password:usconfirm your password:us{'username': 'us', 'password': 'us'}write json file success!Process finished with exit code 0

然后我們看下文本文件中的內(nèi)容:

python 存儲(chǔ)json數(shù)據(jù)的操作

接下來(lái)我們就需要學(xué)習(xí)一下怎么讀取json格式的內(nèi)容了。

with open(’user_info.json’, ’r’, encoding=’utf-8’) as json_file: data = json.load(json_file) print(data)

讀取json數(shù)據(jù)需要使用json.load函數(shù):

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: {read}, Any, cls: Any, object_hook: Any, parse_float: Any, parse_int: Any, parse_constant: Any, object_pairs_hook: Any, kw: Dict[str, Any]) -> Any

這里我們需要提供一個(gè)參數(shù)fp,也就是我們要操作的文件句柄。

程序運(yùn)行輸出:

{'username': 'us', 'password': 'us'}

我們可以打印一下json.load返回的是什么類(lèi)型的:

print(type(data))

輸出:

<class ’str’>

可見(jiàn),這是一個(gè)字符串,這是為什么呢?難道不應(yīng)該返回的是python對(duì)應(yīng)的對(duì)象嗎?

在上面的代碼中我們?cè)趯?xiě)入文件前面調(diào)用過(guò):

user_info = json.dumps({’username’: name, ’password’: password}, ensure_ascii=False)

這一行代碼,大家還記得吧,它返回的是一個(gè)json字符串,所以上面的例子中我們需要使用json.loads重新反序列化為python對(duì)象,這一點(diǎn)大家留意一下,上面的例子我們是為了給大家演示json.loads的相關(guān)用法,使用如下:

data = json.loads(data)print(type(data))print(data[’username’])

如果沒(méi)有這行代碼,那么 data = json.load(json_file)返回的就是我們自己組織的數(shù)據(jù)結(jié)構(gòu)了,如果還是{‘username’: name, ‘password’: password}這種格式,那么返回就是一個(gè)字典對(duì)象。

下面我們?cè)谕ㄟ^(guò)一個(gè)list來(lái)看一下:

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)

運(yùn)行程序:

<class ’list’>

[1, 2, 3, 4, 5]

補(bǔ)充:Python創(chuàng)建并保存json文件,支持?jǐn)?shù)據(jù)更新保存

大家還是直接看代碼吧~

import jsonclass Params(): '''Class that loads hyperparameters from a json file.Example:```params = Params(json_path)print(params.learning_rate)params.learning_rate = 0.5 # change the value of learning_rate in params```''' def __init__(self, json_path):with open(json_path) as f: params = json.load(f) # 將json格式數(shù)據(jù)轉(zhuǎn)換為字典 self.__dict__.update(params) def save(self, json_path):with open(json_path, ’w’) as f: json.dump(self.__dict__, f, indent=4) # indent縮進(jìn)級(jí)別進(jìn)行漂亮打印 def update(self, json_path):'''Loads parameters from json file'''with open(json_path) as f: params = json.load(f) self.__dict__.update(params) @property # Python內(nèi)置的@property裝飾器就是負(fù)責(zé)把一個(gè)方法變成屬性調(diào)用的 def dict(self):'''Gives dict-like access to Params instance by `params.dict[’learning_rate’]'''return self.__dict__if __name__ == ’__main__’: parameters = {'SEED': 1, 'dataset': 'Omniglot', 'meta_lr': 1e-3, 'num_episodes': 5000, 'num_classes': 5, 'num_samples': 1, 'num_query': 10, 'num_steps': 100, 'num_inner_tasks': 8, 'num_train_updates': 1, 'num_eval_updates': 1, 'save_summary_steps': 100, 'num_workers': 1 } json_str = json.dumps(parameters, indent=4) with open(’params.json’, ’w’) as f: # 創(chuàng)建一個(gè)params.json文件f.write(json_str) # 將json_str寫(xiě)到文件中 params = Params(’params.json’) params.SEED = 2 # 修改json中的數(shù)據(jù) params.save(’params.json’) # 將修改后的數(shù)據(jù)保存

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 代办建筑资质升级-建筑资质延期就找上海国信启航 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 中医治疗皮肤病_潍坊银康医院「山东」重症皮肤病救治平台 | 间苯二酚,间苯二酚厂家-淄博双和化工 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 | 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 法兰螺母 - 不锈钢螺母制造厂家 - 万千紧固件--螺母街 | 活动策划,舞台搭建,活动策划公司-首选美湖上海活动策划公司 | 在线PH计-氧化锆分析仪-在线浊度仪-在线溶氧仪- 无锡朝达 | 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 真空泵厂家_真空泵机组_水环泵_旋片泵_罗茨泵_耐腐蚀防爆_中德制泵 | 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | 博莱特空压机|博莱特-阿特拉斯独资空压机品牌核心代理商 | 半容积式换热器_北京浮动盘管换热器厂家|北京亿丰上达 | 真空包装机-诸城市坤泰食品机械有限公司 | 整车VOC采样环境舱-甲醛VOC预处理舱-多舱法VOC检测环境仓-上海科绿特科技仪器有限公司 | 废水处理-废气处理-工业废水处理-工业废气处理工程-深圳丰绿环保废气处理公司 | 磁棒电感生产厂家-电感器厂家-电感定制-贴片功率电感供应商-棒形电感生产厂家-苏州谷景电子有限公司 | MVR蒸发器厂家-多效蒸发器-工业废水蒸发器厂家-康景辉集团官网 | 海尔生物医疗四川代理商,海尔低温冰箱四川销售-成都壹科医疗器械有限公司 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 中原网视台| 科箭WMS仓库管理软件-TMS物流管理系统-科箭SaaS云服务 | 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | atcc网站,sigma试剂价格,肿瘤细胞现货,人结肠癌细胞株购买-南京科佰生物 |