Python學習之路----json 和 pickle

JSON

在各種編程語言中都有各自規定的數據類型,且根據硬件平臺的不同,佔用的字節大小也不同。如果想要不同類型的語言之間進行通信,就需要轉化成json字符串進行。

高級數據類型與JSON之間的轉化


#將列表轉化成字符串並存入文件
import json
file_dump = open('dump1','w',encoding = 'utf8')

list1 = [1,2.2,'hello',(4,5,6),{'name':'zhangsan'}]
x = json.dumps(list1)
print(x,type(x))
file_dump.write(x)
file_dump.close()

file_dump = open('dump1','r',encoding = 'utf8')
y = file_dump.read()
y = json.loads(y)
print(y,type(y))
file_dump.close()

#結果:
#[1, 2.2, "hello", [4, 5, 6], {"name": "zhangsan"}] <class 'str'>
#[1, 2.2, 'hello', [4, 5, 6], {'name': 'zhangsan'}] <class 'list'>


file_dump = open('dump2','w',encoding = 'utf8')
list1 = [1,2.2,'hello',(4,5,6),{'name':'zhangsan'}]
json.dump(list1,file_dump)
file_dump.close()

#dump()和dumps()的區別就是dump()可以直接以數據和文件描述符爲參數,並直接把轉化後的數據寫入文件

PICKLE

json只能只能把python中幾種特定的數據類型轉化,但是卻不能轉化其他的一些數據類型,如類對象。pickle和json的功能差不多,但是pickle卻能轉化任何數據類型。

#將數據轉化成二進制
import pickle
dict1 = {'name':'張三','age':'lisi'}
x = pickle.dumps(dict1)
print('x:{} type(x):{}'.format(x,type(x)))
y = pickle.loads(x)
print('y:{} type(y):{}'.format(y,type(y)))
#結果:
#x:b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x06\x00\x00\x00\xe5\xbc\xa0\xe4\xb8\x89q\x02X\x03\x00\x00\x00ageq\x03X\x04\x00\x00\x00lisiq\x04u.' type(x):<class 'bytes'>
#y:{'name': '張三', 'age': 'lisi'} type(y):<class 'dict'>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章