python变量持久化_Python 数据持久化:JSON
Python 數據持久化:JSON
編程派微信號:codingpy
淡藍色字體可以直接點擊查看
上周更新的《Think Python 2e》第14章講述了幾種數據持久化的方式,包括dbm、pickle等,但是考慮到篇幅和讀者等因素,并沒有將各種方式都列全。
本文將介紹一個與pickle類似的輕量級數據持久化方式,即json。而且json格式也是在網絡數據傳輸的一種常見格式,非常有了解和學習的必要。
JSON與Pickle的區別
Python官方文檔中是這么比較JSON與Pickle的:
JSON是文本形式的存儲,Pickle則是二進制形式(至少常用二進制)
JSON是人可讀的,Pickle不可讀
JSON廣泛應用于除Python外的其他領域,Pickle是Python獨有的
JSON只能dump一些python的內置對象,Pickle可以存儲幾乎所有對象
JSON一般使用方式
Python中處理json的自帶庫就是json模塊,需要用到的方法大致就是以下4個,其實它們的參數有很多這里暫且省略。
可以看到,結尾帶s就是在字符串層面上操作,如果不帶s就是在文件層級操作。obj指的是需要轉化的對象,可以是一個字典或者列表,fp是文件句柄,用open打開。s則是一個字符串。
dumps返回的是一個字符串,load和loads則會返回python的對象。
以上是最簡單的一些使用方式,這里還有一些實用的參數可以選擇。
ensure_ascii參數,是在有中文的情況下,設置為False可以防止將其解碼而得到亂碼,在loads的時候可以指定encoding來保持編碼。
indent參數如果不指定的話,輸出的字符串就是緊湊的形式,indent指定為4就可以輸出縮進為4的美化形式,在需要給人看的時候用這個不錯。
JSON序列化datetime問題
Python自己的json.dumps不能序列化datetime對象,如果需要dump這類對象時可以自己定義JSONEncoder。
這樣在dump時指定cls參數就可以完成序列化datetime的任務了,如果覺得麻煩的話,可以使用偏函數的方法自己封裝一下。
simplejson
Python中自帶的json庫是在2.6版本中才加入的。因此,如果你需要使用一個更早的Python版本并且處理json數據,那么你可以安裝一個第三方庫:simplejson。
simplejson模擬了自帶的json庫,目前支持Python 2.5+和Python 3.3+。根據官方文檔的介紹,該庫在沒有安裝C擴展的情況下,速度仍優于自帶的json庫。這應該也是為什么simplejson在PyPI的下載數超高的原因之一。
要使用simplejson,你只需要像下面這樣導入即可:
import?simplejson?as?json
其他的代碼不需要修改。
本文參考了http://brieflyx.me/2015/python-module/python-data-persistence/一文。
▼
總結
以上是生活随笔為你收集整理的python变量持久化_Python 数据持久化:JSON的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 下载 沙耶之歌Android_沙耶之歌安
- 下一篇: 为什么在 iPhone 中删除的照片,在