일상적인 개발에서 데이터 직렬화 및 역직렬화는 일반적인 데이터 작업입니다. Python은 개발자가 데이터 직렬화 작업을 쉽게 구현할 수 있도록 json 모듈과 pickle 모듈이라는 두 가지 모듈을 제공합니다. 이 두 모듈의 주요 차이점은 다음과 같습니다.
Json은 전송되는 데이터의 양이 적고 데이터 형식을 쉽게 구문 분석할 수 있다는 특성으로 인해 데이터를 전달하는 데 널리 사용됩니다. 데이터 형식. 여기에는 다음과 같이 일반적으로 사용되는 여러 함수가 포함되어 있습니다.
dumps() 함수는 Python 개체를 Json 문자열로 인코딩할 수 있습니다. 예:
#字典转成json字符串 加上ensure_ascii=False以后,可以识别中文, indent=4是间隔4个空格显示 import json d={'小明':{'sex':'男','addr':'上海','age':26},'小红':{ 'sex':'女','addr':'上海', 'age':24},} print(json.dumps(d,ensure_ascii=False,indent=4)) #执行结果: { "小明": { "sex": "男", "addr": "上海", "age": 26 }, "小红": { "sex": "女", "addr": "上海", "age": 24 } }
dump() 함수는 Python 객체를 json 문자열로 인코딩하고 별도의 파일을 작성할 필요 없이 자동으로 파일에 쓸 수 있습니다. 예:
#字典转成json字符串,不需要写文件,自动转成的json字符串写入到‘users.json’的文件中 import json d={'小明':{'sex':'男','addr':'上海','age':26},'小红':{ 'sex':'女','addr':'上海', 'age':24},} #打开一个名字为‘users.json’的空文件 fw =open('users.json','w',encoding='utf-8') json.dump(d,fw,ensure_ascii=False,indent=4)
loads() 함수는 json 문자열을 Python 데이터 유형으로 변환할 수 있습니다. 예를 들어:
#这是users.json文件中的内容 { "小明":{ "sex":"男", "addr":"上海", "age":26 }, "小红":{ "sex":"女", "addr":"上海", "age":24 } } #!/usr/bin/python3 #把json串变成python的数据类型 import json #打开‘users.json’的json文件 f =open('users.json','r',encoding='utf-8') #读文件 res=f.read() print(json.loads(res)) #执行结果: {'小明': {'sex': '男', 'addr': '上海', 'age': 26}, '小红': {'sex': '女', 'addr': '上海', 'age': 24}}
load()에는 load()와 유사한 함수가 있습니다. load() 함수는 json 문자열을 Python 데이터 유형으로 변환할 수 있습니다. 파일 객체이므로 별도로 읽을 필요가 없습니다. 예:
#把json串变成python的数据类型:字典,传一个文件对象,不需要再单独读文件 import json #打开文件 f =open('users.json','r',encoding='utf-8') print(json.load(f)) #执行结果: {'小明': {'sex': '男', 'addr': '上海', 'age': 26}, '小红': {'sex': '女', 'addr': '上海', 'age': 24}}
Pickle 모듈에는 Json 모듈과 유사한 기능이 있습니다. 여기에는 dump(), dump(), load() 및 load()라는 네 가지 기능도 포함되어 있습니다.
dump와 덤프의 차이점은 전자는 객체를 직렬화하는 반면 후자는 객체를 직렬화하여 파일에 저장한다는 것입니다.
로드와 로드의 차이점은 전자는 직렬화된 문자열을 역직렬화하는 반면, 후자는 파일에서 직렬화된 문자열을 읽고 역직렬화한다는 것입니다.
dumps() 함수는 데이터를 특수 형식의 Python 언어에서만 인식되는 문자열로 변환할 수 있습니다. 예:
import pickle # dumps功能 import pickle data = ['A', 'B', 'C','D'] print(pickle.dumps(data)) b'x80x03]qx00(Xx01x00x00x00Aqx01Xx01x00x00x00Bqx02Xx01x00x00x00Cqx03Xx01x00x00x00Dqx04e.'
dump() 함수는 다음을 통해 데이터를 변환할 수 있습니다. 특수 형태는 파이썬 언어에서만 인식되는 문자열로 변환되어 파일에 기록됩니다. 예:
# dump功能 with open('test.txt', 'wb') as f: pickle.dump(data, f) print('写入成功') 写入成功
loads() 함수는 피클 데이터를 Python 데이터 구조로 변환할 수 있습니다. 예:
# loads功能 msg = pickle.loads(datastr) print(msg) ['A', 'B', 'C', 'D']
load() 함수는 데이터 파일에서 데이터를 읽고 이를 Python 데이터 구조로 변환할 수 있습니다. 예:
# load功能 with open('test.txt', 'rb') as f: data = pickle.load(f) print(data) ['A', 'B', 'C', 'D']
이 섹션에서는 데이터 직렬화 및 역직렬화를 지원하는 Python의 json&pickle 모듈의 일반적인 작업을 소개합니다.
위 내용은 Python의 데이터 직렬화 작업 구현에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!