>  기사  >  백엔드 개발  >  json 및 pickle 사용법 소개

json 및 pickle 사용법 소개

PHP中文网
PHP中文网원래의
2017-06-21 16:48:501158검색

json

json은 프로그램 데이터 유형의 직렬화 및 역직렬화를 수행하는 모듈 중 하나입니다. 다른 플랫폼과 다른 프로그램에서 데이터를 교환하는 데 사용할 수 있거나 프로그램이 데이터를 임시로 저장하는 방법으로 사용할 수 있습니다. json의 사용법을 살펴보겠습니다.

 1 #json_序列化.py 2 import json 3 dic={ 4     "id":"123456", 5     "name":"Jack", 6     "country":"China" 7     } 8 date=json.dumps(dic) 9 with open("demo.txt","w") as f:10     f.write(date)11 12 #json_反序列化.py13 import json14 with open("demo.txt","r") as f:15     dic1=json.loads(f.read())16 print(dic1["name"])

두 파일의 내용은 위에 표시되어 있습니다. 첫 번째 파일은 (dump() 메서드를 사용하여) 사전을 문자열로 직렬화한 다음 작성하는 것입니다. 파일(demo.txt)로 변환합니다. 두 번째 파일은 데모.txt의 내용을 읽은 다음, load() 메서드를 사용하여 이를 실행 가능한 사전 객체로 역직렬화하고 사전의 "이름" 내용을 인쇄하는 것입니다.

실제로 json에는 dump() 및 load() 두 가지 메서드 외에도 dump() 및 load()라는 두 가지 더 간단한 메서드가 있습니다. 사용법은 다음과 같습니다.

 1 #json_序列化2.py 2 import json 3 dic={ 4     "id":"123456", 5     "name":"Jack", 6     "country":"China" 7     } 8 with open("demo.txt","w") as f: 9     date=json.dump(dic,f)10 11     12 13 #json_反序列化2.py14 import json15 with open("demo.txt","r") as f:16     dic1=json.load(f)17 print(dic1["name"])

비교를 보면 dump() 및 load()가 dump(), load() 및 파일 읽기 및 쓰기 작업을 캡슐화한다는 것을 알 수 있습니다.

pickle

pickle에도 위의 4가지 json 메서드가 있고 사용법도 완전히 동일하므로 여기서는 설명하지 않겠습니다. 그러나 피클은 더 강력합니다. json은 목록, 사전 등과 같은 상대적으로 간단한 일부 데이터 개체만 직렬화할 수 있습니다. Pickle은 함수 및 클래스와 같은 복잡한 객체를 직렬화할 수도 있습니다.

다음은 피클이 함수를 직렬화하고 역직렬화하는 방법을 보여줍니다.

 1 #pickle_序列化.py 2 import pickle 3 #定义函数hello 4 def hello(name): 5     print("hello",name) 6 #定义列表,把hello也存进去 7 dic1={ 8     "name":"Mark", 9     "func":hello10     }11 with open("demo.txt","wb") as f:12     pickle.dump(dic1,f)13 14 #pickle_反序列化.py15 import pickle16 #######################17 def hello(name):18     print("hello",name)19 #######################20 with open("demo.txt","rb")as f:21     dic2=pickle.load(f)22 dic2["func"]("Jack")

두 파일의 내용도 위에 나와있습니다. 다음 사항에 주의하세요.

1. 함수, 클래스 등의 직렬화 및 역직렬화 시 파일을 열 때 "wb" 및 "rb"에 주의해야 합니다. ”

2. 역직렬화된 함수를 새 파일에서 실행하려면 이전에 정의한 함수의 소스 코드를 새 파일에 복사해야 합니다(pickle_deserialization.py의 두 문자에 유의하세요). # 행), 그렇지 않으면 실행되지 않습니다. # 행에 내용이 없으면 프로그램은 오류를 보고합니다: AttributeError: Can't get attribute 'hello' on

3. 함수 이름이 직렬화 중에 사용된 함수 이름과 일치하는지 확인하기만 하면 됩니다. 함수 변경 후 함수를 호출하면 변경된 함수에 따라 실행됩니다(물론 이 변경이 필요해야 합니다)

위 내용은 json 및 pickle 사용법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.