Python의 피클 사전

Python Ui Pikeul Sajeon



Pickle은 객체를 메모리에서 이진 형식으로 디스크에 저장할 수 있는 바이트 스트림으로 변환하는 프로세스인 Python 엔터티 프레임워크를 사전 처리하는 데 사용할 수 있습니다. 이 절차를 직렬화라고 합니다. 이를 수행하려면 pickle dump() 메소드를 사용하십시오. 이 바이너리 레코드가 Python 프로그램에 다시 로드되면 역직렬화되고 pickle load() 메서드를 사용하여 Python 개체로 다시 변환될 수 있습니다.

이 기사에서는 Python의 pickle 모듈을 사용하여 데이터, 특히 사전을 저장하는 방법을 알려줍니다. 시작하려면 pickle 모듈을 확보해야 합니다. Pickle dump()는 세 개의 매개변수를 허용합니다. 첫 번째 입력은 저장할 데이터를 지정합니다. 두 번째 매개변수는 wb(write-binary) 모드에서 파일을 열 때 반환되는 파일 객체입니다. 키-값 인수는 세 번째 매개변수입니다. 프로토콜은 이 매개변수로 정의됩니다. 피클은 HIGHEST PROTOCOL과 피클 DEFAULT PROTOCOL의 두 가지 유형으로 분류됩니다. 데이터를 검색하거나 역직렬화하기 위해 rb(read-binary) 모드로 파일을 열어 파일 객체를 가져오는 pickle load() 메서드를 사용합니다.







예제 1: Pickle 덤프 및 로드 기능을 사용하여 Pickle 파일에서 데이터 직렬화 및 역직렬화

이 예제에서는 매우 간단한 코드로 데이터를 사전으로 직렬화 및 역직렬화하는 방법을 알아봅니다.




이전 그림에 제시된 코드에서 Python 라이브러리의 첫 번째 pickle 모듈을 가져오므로 해당 메서드를 사용할 수 있습니다. 그런 다음 2개의 키와 값이 있는 데이터 사전이 초기화되고 'shape'라는 변수에 저장됩니다. 다음 줄에서 pickle dump() 메서드는 write-binary(wb) 모드에서 이름이 'info.p'인 새 파일을 여는 데 사용되며 'shape' 데이터는 이 파일에 저장됩니다. 다음 줄에서 pickle load() 메서드는 rb 모드에서 데이터를 덤프한 동일한 파일에 사용됩니다. 이것은 사전 데이터를 반환하고 'a'라는 변수에 저장됩니다. 마지막으로 이 반환된 개체는 다음 스크린샷과 같이 인쇄 명령을 사용하여 출력 터미널에 표시됩니다.



먼저 덤프 방식으로 “info.p” 파일에 데이터가 저장되었음을 알 수 있습니다. 그런 다음 동일한 파일에 load() 메서드를 사용했을 때 데이터를 되찾았습니다.





예제 2: 추가 프로토콜과 함께 Pickle Dump 함수를 사용하여 Python에서 데이터 직렬화

이것은 최신 프로토콜인 pickle의 'HIGHEST_PROTOCOL'이라는 추가 프로토콜을 사용하는 유사한 예입니다. 이 프로토콜은 우리가 사용할 수 있는 새로운 언어 기능을 허용하고 최적화를 포함합니다.




이전 그림에 제공된 코드에서 첫 번째 pickle 모듈을 가져옵니다. 그러면 키와 값이 있는 한 항목의 사전이 초기화되어 변수 “a”에 저장됩니다. 다음 줄에서 'info.p'라는 새 파일이 wb 모드에서 핸들로 열립니다. 이제 파일은 'handle'이라는 개체에 있습니다. 그런 다음 dump() 함수는 'HIGHEST_PROTOCOL'을 사용하여 사전 'a'를 '처리'하는 데 사용됩니다. 이렇게 하면 'a'의 사전이 컴퓨터 디스크의 'info.p' 파일에 저장됩니다. 파일에서 정보를 추출하기 위해 먼저 파일을 'rb' 모드로 엽니다. 그런 다음 이 파일에 pickle load() 메서드가 사용됩니다. 반환된 데이터는 'b' 속성에 저장됩니다. 마지막으로 인쇄 명령을 사용하면 다음 화면 캡처와 같이 이 정보가 출력 노드에 표시됩니다.

예제 3: Pickle 덤프 및 로드 기능을 사용하여 Pickle 파일에서 데이터 목록의 직렬화 및 역직렬화

이 예제에서는 pickle 모듈을 먼저 가져옵니다. 그런 다음 일부 데이터를 목록 형식으로 사전에 삽입하고 'shape_colors' 변수에 저장합니다. 다음 줄에서 pickle dump() 메서드는 이 데이터와 함께 직접 사용됩니다. 매개변수의 파일 대신 'info.p' 파일이 wb 모드로 열립니다. 결과적으로 사전 데이터는 이제 컴퓨터의 디스크에 저장된 이 파일에 덤프됩니다. 그런 다음 파일에서 데이터를 읽기 위해 동일한 파일에서 pickle load() 메서드를 사용합니다. 반환된 데이터는 변수 “a”에 저장됩니다. 마지막으로 인쇄 명령을 사용하면 이 정보가 다음 스냅샷과 같이 보조 터미널에 표시됩니다.



예 4: Pickle Dump 및 Load 함수를 다른 매개변수와 함께 사용하여 Pickle 파일에 정보 저장

제공된 코드에서 첫 번째 피클 모듈을 가져옵니다. 그런 다음 급여 사전이 초기화되어 'salaries' 변수에 저장됩니다. 다음 줄에서 새 파일 'salary.p'가 wb 모드에서 핸들로 열립니다. 이제 파일은 'handle'이라는 개체에 있습니다. 그런 다음 pickle dump() 함수를 사용하여 'HIGHEST_PROTOCOL'을 사용하여 'salaries' 사전을 '처리'합니다. 이를 통해 'salaries'의 사전을 'salary.p' 파일에 컴퓨터의 디스크에 저장할 수 있습니다. 이제 파일에서 데이터를 다시 검색하기 위해 파일을 먼저 'rb' 모드로 엽니다. 그런 다음 이 파일에 pickle load() 메서드가 사용됩니다. 되돌린 정보는 변수 “a”에 저장됩니다. 궁극적으로 인쇄 명령어를 사용하면 이 데이터가 다음 스냅샷과 같이 출력 끝에 표시됩니다.



예제 5: Pickle 덤프 및 로드 기능을 사용하여 Pickle 파일에서 여러 차원의 데이터 직렬화 및 역직렬화

Python에서 DataFrames(다차원 테이블)를 생성하면 Panda의 Python 모듈에 있는 새로운 메서드와 함수를 테스트하는 데 편리합니다. DataFrame을 처음부터 만드는 방법은 다양하지만 가장 간단한 방법 중 하나는 기본 사전을 활용하는 것입니다.


이전 그림에서 제공된 코드에서 첫 번째 pickle 및 Pandas 모듈을 가져옵니다. 그런 다음 pd.DataFrame() 메서드를 사용하여 다차원 테이블을 만듭니다. 전략의 다음 속성은 4개의 목록으로 구성된 목록입니다. 각 목록은 테이블의 행에 해당합니다. 두 번째 매개변수는 테이블의 각 열의 제목을 정의하는 'columns'입니다. 이 DataFrame은 'pre'에 저장됩니다. 그러면 'attendance.p'라는 새 파일이 wb 모드로 열리고 DataFrame과 함께 이 파일에 pickle dump() 메서드가 사용됩니다. 이제 지정된 데이터는 컴퓨터 하드 디스크의 'attendance.p' 파일에 저장됩니다.


파일에서 데이터를 검색하기 위해 파일 읽기를 허용하는 rb 모드에서 파일을 엽니다. 그런 다음 'attendance.p' 파일에서 pickle load() 메서드를 사용합니다. 마지막으로 파일의 데이터가 출력 터미널에 표시됩니다. 보시다시피 전체 DataFrame은 'attendance.p' 파일에 저장된 출력 터미널에 표시됩니다.

결론

피클 파일로 작업할 때 추가 예방 조치를 취하십시오. pickle 모듈은 보안이 부족합니다. 자신 있는 데이터만 언피클링하십시오. 역피클링 프로세스 중에 임의의 코드를 실행할 수 있는 악의적인 피클 데이터를 생성할 수 있습니다. 그럼에도 불구하고 Python에서 사전, 목록 및 테이블을 저장하는 효과적인 방법입니다. 피클링은 사전 처리와 같은 데이터에 대한 일상적인 작업을 실행할 때 데이터 분석에 특히 유용합니다. 이 기사가 Python의 pickle 모듈의 다양한 방법과 이를 사전과 함께 사용하는 방법에 대해 배우는 데 도움이 되었기를 바랍니다.