二十六、python中json學習

來源:互聯網
上載者:User

標籤:開啟檔案   序列   pen   one   位元組   abc   關鍵字   name   count   

1.json序列介紹:提供4個關鍵字:dumps,dump,loads,load(與pickle用法完全相同)

  文法:f.write(bytes(json.dumps(dict),encoding="utf-8"))

     r=json.loads(f.read().decode("utf-8"))

  將字典存入檔案,由於字典格式不能轉化成位元組格式的,所以引入json

  A.將一個字典轉化成json序列存入一個檔案


import json

accounts={
1000:{
‘name‘:‘Tom‘,
‘email‘:‘[email protected]‘,
‘passwd‘:‘abc123‘,
‘balance‘:20000,
‘phone‘:‘44165465‘,
‘bank_acc‘:{
‘ICBC‘:165116161,
‘CBC‘:16516516516,
‘ABC‘:656151616516
}
},
1001:{
‘name‘:‘Tom1‘,
‘email‘:‘[email protected]‘,
‘passwd‘:‘abc1123‘,
‘balance‘:210000,
‘phone‘:‘441654165‘,
‘bank_acc‘:{
‘ICBC‘:16511161611,
‘CBC‘:165165165161,
‘ABC‘:6561516165161
}
}
}

print (json.dumps(accounts)) #將字典轉成json序列
f=open("account.db","wb") #寫入檔案account.db
f.write(bytes(json.dumps(accounts),encoding="utf-8")) #寫入檔案account.db
f.close()
-------------------------------------------------------------------
{"1000": {"name": "Tom", "email": "[email protected]", "passwd": "abc123", "balance": 20000, "phone": "44165465", "bank_acc": {"ICBC": 165116161, "CBC": 16516516516, "ABC": 656151616516}}, "1001": {"name": "Tom1", "email": "[email protected]", "passwd": "abc1123", "balance": 210000, "phone": "441654165", "bank_acc": {"ICBC": 16511161611, "CBC": 165165165161, "ABC": 6561516165161}}}

  B.重新建立一個新的python檔案讀取account.db中的內容:

 

import pickle

account_file=open("account.db","rb") #開啟檔案
account_dict=json.loads(account_file.read().decode("utf-8")) #以json負載檔案
#print (account_dict)
account_file.close()
#print(type(account_dict[‘1000‘][‘balance‘]))
account_dict[‘1000‘][‘balance‘] -= 500 #取字典中balance然後減500
print (account_dict)

f=open("account.db","wb")
f.write(bytes(json.dumps(account_dict),encoding="utf-8")) #將變更後的內容dumps入檔案
f.close()
print (account_dict)
-----------------------------------------------------------------------------

{‘1000‘: {‘name‘: ‘Tom‘, ‘email‘: ‘[email protected]‘, ‘passwd‘: ‘abc123‘, ‘balance‘: 20000, ‘phone‘: ‘44165465‘, ‘bank_acc‘: {‘ICBC‘: 165116161, ‘CBC‘: 16516516516, ‘ABC‘: 656151616516}}, ‘1001‘: {‘name‘: ‘Tom1‘, ‘email‘: ‘[email protected]‘, ‘passwd‘: ‘abc1123‘, ‘balance‘: 210000, ‘phone‘: ‘441654165‘, ‘bank_acc‘: {‘ICBC‘: 16511161611, ‘CBC‘: 165165165161, ‘ABC‘: 6561516165161}}}
{‘1000‘: {‘name‘: ‘Tom‘, ‘email‘: ‘[email protected]‘, ‘passwd‘: ‘abc123‘, ‘balance‘: 19500, ‘phone‘: ‘44165465‘, ‘bank_acc‘: {‘ICBC‘: 165116161, ‘CBC‘: 16516516516, ‘ABC‘: 656151616516}}, ‘1001‘: {‘name‘: ‘Tom1‘, ‘email‘: ‘[email protected]‘, ‘passwd‘: ‘abc1123‘, ‘balance‘: 210000, ‘phone‘: ‘441654165‘, ‘bank_acc‘: {‘ICBC‘: 16511161611, ‘CBC‘: 165165165161, ‘ABC‘: 6561516165161}}}
{‘1000‘: {‘name‘: ‘Tom‘, ‘email‘: ‘[email protected]‘, ‘passwd‘: ‘abc123‘, ‘balance‘: 19500, ‘phone‘: ‘44165465‘, ‘bank_acc‘: {‘ICBC‘: 165116161, ‘CBC‘: 16516516516, ‘ABC‘: 656151616516}}, ‘1001‘: {‘name‘: ‘Tom1‘, ‘email‘: ‘[email protected]‘, ‘passwd‘: ‘abc1123‘, ‘balance‘: 210000, ‘phone‘: ‘441654165‘, ‘bank_acc‘: {‘ICBC‘: 16511161611, ‘CBC‘: 165165165161, ‘ABC‘: 6561516165161}}}

 

二十六、python中json學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.