찾다
백엔드 개발파이썬 튜토리얼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으로 문의하시기 바랍니다. 삭제
Python vs. C : 학습 곡선 및 사용 편의성Python vs. C : 학습 곡선 및 사용 편의성Apr 19, 2025 am 12:20 AM

Python은 배우고 사용하기 쉽고 C는 더 강력하지만 복잡합니다. 1. Python Syntax는 간결하며 초보자에게 적합합니다. 동적 타이핑 및 자동 메모리 관리를 사용하면 사용하기 쉽지만 런타임 오류가 발생할 수 있습니다. 2.C는 고성능 응용 프로그램에 적합한 저수준 제어 및 고급 기능을 제공하지만 학습 임계 값이 높고 수동 메모리 및 유형 안전 관리가 필요합니다.

Python vs. C : 메모리 관리 및 제어Python vs. C : 메모리 관리 및 제어Apr 19, 2025 am 12:17 AM

Python과 C는 메모리 관리 및 제어에 상당한 차이가 있습니다. 1. Python은 참조 계산 및 쓰레기 수집을 기반으로 자동 메모리 관리를 사용하여 프로그래머의 작업을 단순화합니다. 2.C는 메모리 수동 관리가 필요하므로 더 많은 제어를 제공하지만 복잡성과 오류 위험을 증가시킵니다. 선택할 언어는 프로젝트 요구 사항 및 팀 기술 스택을 기반으로해야합니다.

과학 컴퓨팅을위한 파이썬 : 상세한 모양과학 컴퓨팅을위한 파이썬 : 상세한 모양Apr 19, 2025 am 12:15 AM

과학 컴퓨팅에서 Python의 응용 프로그램에는 데이터 분석, 머신 러닝, 수치 시뮬레이션 및 시각화가 포함됩니다. 1.numpy는 효율적인 다차원 배열 및 수학적 함수를 제공합니다. 2. Scipy는 Numpy 기능을 확장하고 최적화 및 선형 대수 도구를 제공합니다. 3. 팬더는 데이터 처리 및 분석에 사용됩니다. 4. matplotlib는 다양한 그래프와 시각적 결과를 생성하는 데 사용됩니다.

파이썬 및 C : 올바른 도구 찾기파이썬 및 C : 올바른 도구 찾기Apr 19, 2025 am 12:04 AM

Python 또는 C를 선택할 것인지 프로젝트 요구 사항에 따라 다릅니다. 1) Python은 간결한 구문 및 풍부한 라이브러리로 인해 빠른 개발, 데이터 과학 및 스크립팅에 적합합니다. 2) C는 컴파일 및 수동 메모리 관리로 인해 시스템 프로그래밍 및 게임 개발과 같은 고성능 및 기본 제어가 필요한 시나리오에 적합합니다.

데이터 과학 및 기계 학습을위한 파이썬데이터 과학 및 기계 학습을위한 파이썬Apr 19, 2025 am 12:02 AM

Python은 데이터 과학 및 기계 학습에 널리 사용되며 주로 단순성과 강력한 라이브러리 생태계에 의존합니다. 1) 팬더는 데이터 처리 및 분석에 사용되며, 2) Numpy는 효율적인 수치 계산을 제공하며 3) Scikit-Learn은 기계 학습 모델 구성 및 최적화에 사용되며 이러한 라이브러리는 Python을 데이터 과학 및 기계 학습에 이상적인 도구로 만듭니다.

Python 학습 : 2 시간의 일일 연구가 충분합니까?Python 학습 : 2 시간의 일일 연구가 충분합니까?Apr 18, 2025 am 12:22 AM

하루에 2 시간 동안 파이썬을 배우는 것으로 충분합니까? 목표와 학습 방법에 따라 다릅니다. 1) 명확한 학습 계획을 개발, 2) 적절한 학습 자원 및 방법을 선택하고 3) 실습 연습 및 검토 및 통합 연습 및 검토 및 통합,이 기간 동안 Python의 기본 지식과 고급 기능을 점차적으로 마스터 할 수 있습니다.

웹 개발을위한 파이썬 : 주요 응용 프로그램웹 개발을위한 파이썬 : 주요 응용 프로그램Apr 18, 2025 am 12:20 AM

웹 개발에서 Python의 주요 응용 프로그램에는 Django 및 Flask 프레임 워크 사용, API 개발, 데이터 분석 및 시각화, 머신 러닝 및 AI 및 성능 최적화가 포함됩니다. 1. Django 및 Flask 프레임 워크 : Django는 복잡한 응용 분야의 빠른 개발에 적합하며 플라스크는 소형 또는 고도로 맞춤형 프로젝트에 적합합니다. 2. API 개발 : Flask 또는 DjangorestFramework를 사용하여 RESTFULAPI를 구축하십시오. 3. 데이터 분석 및 시각화 : Python을 사용하여 데이터를 처리하고 웹 인터페이스를 통해 표시합니다. 4. 머신 러닝 및 AI : 파이썬은 지능형 웹 애플리케이션을 구축하는 데 사용됩니다. 5. 성능 최적화 : 비동기 프로그래밍, 캐싱 및 코드를 통해 최적화

Python vs. C : 성능과 효율성 탐색Python vs. C : 성능과 효율성 탐색Apr 18, 2025 am 12:20 AM

Python은 개발 효율에서 C보다 낫지 만 C는 실행 성능이 높습니다. 1. Python의 간결한 구문 및 풍부한 라이브러리는 개발 효율성을 향상시킵니다. 2.C의 컴파일 유형 특성 및 하드웨어 제어는 실행 성능을 향상시킵니다. 선택할 때는 프로젝트 요구에 따라 개발 속도 및 실행 효율성을 평가해야합니다.

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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는