我有兩個 python 串列:
a_list = [1, 2, 3]
b_list = [4, 5, 6]
我該如何執行以下操作:
創建新的文本檔案 ---> 將串列轉換為 json 字串 ---> 將串列寫入檔案(每個串列在檔案中應該有自己的行)---> 打開檔案 ---> 將每一行讀入新變數并從json字串轉換回python串列?
我被困在這里:
import json
a_list = [1, 2, 3]
b_list = [4, 5, 6]
with open('test.txt', 'w') as f:
f.write(json.dumps(a_list))
f.write(json.dumps(b_list))
(json字串寫在同一行。)
謝謝
uj5u.com熱心網友回復:
使用 JSON
首先,您應該將這些串列放入 dict
d = {
"a" : a_list,
"b" : b_list
}
然后你可以將它轉儲到.json檔案中
json.dump(d,open("file.json","w"))
要讀取/加載檔案,您可以使用
d = json.load(open("file.json","r"))
這將回傳原始字典。IE,
{'a': [1, 2, 3], 'b': [4, 5, 6]}
使用泡菜
傾銷
pickle.dump(a_list,open("b.ls","wb"))
pickle.dump(b_list,open("a.ls","wb"))
加載
pickle.load(open("a.ls","rb"))
pickle.load(open("b.ls","rb"))
僅供參考:我以前從未使用過泡菜:)
與json比較
pickle 協議和 JSON(JavaScript 物件表示法)之間存在根本區別:
JSON 是一種文本序列化格式(它輸出的是 unicode 文本,雖然大多數時候它會被編碼為 utf-8),而 pickle 是一種二進制序列化格式;
JSON 是人類可讀的,而 pickle 不是;
JSON 是可互操作的,并且在 Python 生態系統之外被廣泛使用,而 pickle 是 Python 特有的;
默認情況下,JSON 只能表示 Python 內置型別的子集,不能表示自定義類;pickle 可以表示非常多的 Python 型別(其中許多是自動的,通過巧妙地使用 Python 的自省工具;復雜的情況可以通過實作特定的物件 API 來解決);
與 pickle 不同,反序列化不受信任的 JSON 本身不會產生任意代碼執行漏洞。
來源(python 檔案)
tldr
- 泡菜比較小
- json更快
- json 是人類可讀的(pickle 檔案,例如:?]q)
- json 更安全(在這種情況下不相關)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/481189.html
上一篇:如果大小增加,為什么python串列的位置沒有改變?
下一篇:R中資料幀的逐元素rbind串列
