찾다
백엔드 개발파이썬 튜토리얼Python의 json 모듈과 피클 모듈을 사용하는 방법

json 모듈

json은 C와 Python 등 언어 간 데이터 교환에 사용됩니다. Pickle은 Python과 Python 간의 데이터 교환에만 사용할 수 있습니다.

직렬화 및 역직렬화

객체(변수)를 메모리에서 저장 가능하거나 전송 가능한 객체로 만드는 과정을 직렬화라고 합니다. Python에서는 피클링이라고 하며 다른 언어에서는 직렬화라고도 합니다. 같은 의미. 직렬화 후에는 직렬화된 콘텐츠를 디스크에 기록하거나 네트워크를 통해 다른 시스템으로 전송할 수 있습니다. 차례로, 직렬화된 객체의 변수 내용을 메모리로 다시 읽는 것을 역직렬화, 즉 역피클링이라고 합니다.

다른 프로그래밍 언어 간에 개체를 전송하려면 개체를 XML과 같은 표준 형식으로 직렬화해야 하지만 더 좋은 방법은 JSON으로 직렬화하는 것입니다. JSON은 문자열로 표현되고 모든 언어에서 사용할 수 있기 때문입니다. ​​읽고 디스크에 쉽게 저장하거나 네트워크를 통해 전송할 수 있습니다. JSON은 표준 형식이고 XML보다 빠를 뿐만 아니라 웹 페이지에서 직접 읽을 수도 있어 매우 편리합니다.

JSON으로 표현되는 객체는 표준 JavaScript 언어 객체입니다. JSON과 Python의 내장 데이터 유형 간의 대응은 다음과 같습니다.

Python의 json 모듈과 피클 모듈을 사용하는 방법

파일에 데이터 쓰기 및 읽기 - 사전

dic =' {‘string1':'hello'}' #写文件只能写入字符串 - 手动把字典变成字符串
f = open(‘hello', ‘w')
f.write(dic)
f_read = open(‘hello', ‘r')
data = f_read.read() #从文件中读出的都是字符串
data = eval(data) #提取出字符串中的字典
print(data[‘name'])

json은 위를 구현합니다. 함수 - json을 사용할 수 있습니다. 어떤 언어로든 데이터를 전송하는 것에는 차이가 있습니다.

dic = {‘string1':'hello'}
data = json.dumps(dic)
print(data)
print(type(data)) #dumps()会把我们的变量变成一个json字符串
f = open(“new_hello”, “w”)
f.write(data)

json 문자열과 우리가 수동으로 추가하는 문자열은 json 문자열 사양을 따릅니다. 즉, 문자열이 안에 들어 있습니다. 큰 따옴표.

dumps는 우리가 전달하는 모든 데이터 유형을 큰따옴표로 묶인 문자열로 바꿉니다.

# {‘string1':'hello'} ---> “{“string1”:”hello”}”
# 8 ---> “8”
# ‘hello' ---> ““hello”” – 被json包装后的数据内部只能有双引号
#[1, 2] ---> “[1, 2]”

저장하거나 전송할 때 데이터를 json 문자열로 변환합니다. 이는 모든 언어로 구현될 수 있습니다.

f_read = open(“new_hello”, “r”)
data = json.loads(f_read.read()) #这个data直接就是字典类型
print(data)
print(type(data))

json 모듈 메서드

json.dumps() # 把数据包装成json字符串 – 序列化
json.loads() # 从json字符串中提取出原来的数据 – 反序列化

파이썬에서 l = [1, 2, 3] 목록을 json 문자열로 묶어 저장하거나 보냅니다. C 언어에서 json 구문 분석을 사용하면 해당 값을 C 언어로 가져옵니다. 데이터 구조가 추출됩니다. 배열 buf[3] = {1, 2, 3}으로.

이는 json 문자열이 json 사양을 준수하는 한 덤프와 로드를 함께 사용해야 한다는 의미는 아니며, 덤프 사용 여부는 중요하지 않습니다.

json.dump(data, f) #转换成json字符串并写入文件
#相当于 data = json.dumps(dic) + f.write(data)
data = json.load(f) #先读取文件,再提取出数据
#相当于data = json.loads(f_read.read())

예:

#----------------------------序列化
import json
dic={'name':'alvin','age':23,'sex':'male'}
print(type(dic))#<class &#39;dict&#39;>
j=json.dumps(dic)
print(type(j))#<class &#39;str&#39;>
f=open(&#39;序列化对象&#39;,&#39;w&#39;)
f.write(j)  #-------------------等价于json.dump(dic,f)
f.close()
#-----------------------------反序列化<br>
import json
f=open(&#39;序列化对象&#39;)
data=json.loads(f.read())#  等价于data=json.load(f)

참고:

import json
#dct="{&#39;1&#39;:111}"#json 不认单引号
#dct=str({"1":111})#报错,因为生成的数据还是单引号:{&#39;one&#39;: 1}
dct=&#39;{"1":"111"}&#39;
print(json.loads(dct))

데이터 생성 방법에 관계없이 json 형식만 충족하면 json.loaded할 수 있습니다. 로드하기 위해 반드시 덤프 데이터일 필요는 없습니다.

pickle 모듈

Pickle의 문제는 다른 모든 프로그래밍 언어에 특유한 직렬화 문제와 동일합니다. 즉, Python에서만 사용할 수 있으며, 서로 다른 Python 버전이 서로 호환되지 않을 수도 있다는 것입니다. 따라서 중요하지 않은 데이터만 Pickle로 저장할 수 있습니다. 데이터를 성공적으로 역직렬화할 수 없어도 상관없습니다.

##----------------------------序列化
import pickle
dic={&#39;name&#39;:&#39;alvin&#39;,&#39;age&#39;:23,&#39;sex&#39;:&#39;male&#39;}
print(type(dic))#<class &#39;dict&#39;>
j=pickle.dumps(dic)
print(type(j))#<class &#39;bytes&#39;>
f=open(&#39;序列化对象_pickle&#39;,&#39;wb&#39;)#注意是w是写入str,wb是写入bytes,j是&#39;bytes&#39;
f.write(j)  #-------------------等价于pickle.dump(dic,f)
f.close()
#-------------------------反序列化
import pickle
f=open(&#39;序列化对象_pickle&#39;,&#39;rb&#39;)
data=pickle.loads(f.read())#  等价于data=pickle.load(f)
print(data[&#39;age&#39;])

pickle과 json의 사용법은 동일합니다. 둘 다 학명은 직렬화라고 하는데, json 직렬화 결과는 문자열이고, 피클 직렬화 결과는 바이트입니다. 즉, 형태는 다르지만 내용은 동일하다. 그러나 피클에 의해 직렬화되는 것은 바이트, 즉 파일에 쓸 데이터가 바이트이므로, 파일을 열 때 반드시 해야 한다. wb 바이너리 형식으로 열립니다. pickle이 파일에 쓴 내용은 읽을 수 없지만(문자가 지저분하지만 컴퓨터는 이를 인식할 수 있음) json으로 쓴 데이터는 읽을 수 있습니다. 피클은 더 많은 데이터 유형을 지원하며 피클은 함수와 클래스를 직렬화할 수 있습니다. json은 이러한 두 가지 직렬화를 지원하지 않지만 대부분의 시나리오에서는 여전히 json이 사용됩니다.

위 내용은 Python의 json 모듈과 피클 모듈을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 亿速云에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Numpy 배열은 배열 모듈을 사용하여 생성 된 배열과 어떻게 다릅니 까?Numpy 배열은 배열 모듈을 사용하여 생성 된 배열과 어떻게 다릅니 까?Apr 24, 2025 pm 03:53 PM

numpyarraysarebetterfornumericaloperations 및 multi-dimensionaldata, mumemer-efficientArrays

Numpy Array의 사용은 Python에서 어레이 모듈 어레이를 사용하는 것과 어떻게 비교됩니까?Numpy Array의 사용은 Python에서 어레이 모듈 어레이를 사용하는 것과 어떻게 비교됩니까?Apr 24, 2025 pm 03:49 PM

numpyarraysarebetterforheavynumericalcomputing, whilearraymoduleisiMoresuily-sportainedprojectswithsimpledatatypes.1) numpyarraysofferversatively 및 formanceforgedatasets 및 complexoperations.2) Thearraymoduleisweighit 및 ep

CTYPES 모듈은 파이썬의 어레이와 어떤 관련이 있습니까?CTYPES 모듈은 파이썬의 어레이와 어떤 관련이 있습니까?Apr 24, 2025 pm 03:45 PM

ctypesallowscreatingandmanipulatingC-stylearraysinPython.1)UsectypestointerfacewithClibrariesforperformance.2)CreateC-stylearraysfornumericalcomputations.3)PassarraystoCfunctionsforefficientoperations.However,becautiousofmemorymanagement,performanceo

파이썬의 맥락에서 '배열'및 '목록'을 정의하십시오.파이썬의 맥락에서 '배열'및 '목록'을 정의하십시오.Apr 24, 2025 pm 03:41 PM

Inpython, "목록", isaversatile, mutablesequencetatcanholdmixeddatattypes, whilean "array"isamorememory-efficed, homogeneouseceenceRequiringElements ofthesAmeType.1) ListSareIdeAldiversEdatastorageandmanipulationDuetoIrflexibrieth

파이썬 목록은 변이 가능합니까? 파이썬 어레이는 어떻습니까?파이썬 목록은 변이 가능합니까? 파이썬 어레이는 어떻습니까?Apr 24, 2025 pm 03:37 PM

PythonlistsAndarraysareBotheBotheBothebothable.1) ListSareflexibleandsupporterogenousDatabutarabestemory-efficient.2) Arraysaremorememory-efforhomogeneousdatabutlessverstile, CorrectTypecodeusagetoavoidercer가 필요합니다.

Python vs. C : 주요 차이점 이해Python vs. C : 주요 차이점 이해Apr 21, 2025 am 12:18 AM

Python과 C는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1) Python은 간결한 구문 및 동적 타이핑으로 인해 빠른 개발 및 데이터 처리에 적합합니다. 2) C는 정적 타이핑 및 수동 메모리 관리로 인해 고성능 및 시스템 프로그래밍에 적합합니다.

Python vs. C : 프로젝트를 위해 어떤 언어를 선택해야합니까?Python vs. C : 프로젝트를 위해 어떤 언어를 선택해야합니까?Apr 21, 2025 am 12:17 AM

Python 또는 C를 선택하는 것은 프로젝트 요구 사항에 따라 다릅니다. 1) 빠른 개발, 데이터 처리 및 프로토 타입 설계가 필요한 경우 Python을 선택하십시오. 2) 고성능, 낮은 대기 시간 및 근접 하드웨어 제어가 필요한 경우 C를 선택하십시오.

파이썬 목표에 도달 : 매일 2 시간의 힘파이썬 목표에 도달 : 매일 2 시간의 힘Apr 20, 2025 am 12:21 AM

매일 2 시간의 파이썬 학습을 투자하면 프로그래밍 기술을 효과적으로 향상시킬 수 있습니다. 1. 새로운 지식 배우기 : 문서를 읽거나 자습서를 시청하십시오. 2. 연습 : 코드를 작성하고 완전한 연습을합니다. 3. 검토 : 배운 내용을 통합하십시오. 4. 프로젝트 실무 : 실제 프로젝트에서 배운 것을 적용하십시오. 이러한 구조화 된 학습 계획은 파이썬을 체계적으로 마스터하고 경력 목표를 달성하는 데 도움이 될 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.