pickletools
— 피클 개발자를 위한 도구¶
소스 코드: Lib/pickletools.py
이 모듈은 pickle
모듈의 깊은 세부 사항과 관련된 다양한 상수, 구현에 대한 긴 주석, 그리고 피클 된 데이터를 분석하기 위한 몇 가지 유용한 함수를 포함합니다. 이 모듈의 내용은 pickle
에서 작업하는 파이썬 코어 개발자에게 유용합니다; 아마도 pickle
모듈의 일반 사용자는 pickletools
모듈을 적절한 용도를 찾지 못할 것입니다.
명령 줄 사용법¶
버전 3.2에 추가.
명령 줄에서 호출될 때, python -m pickletools
는 하나 이상의 피클 파일의 내용을 역 어셈블합니다. 피클 형식의 세부 사항이 아닌 피클에 저장된 파이썬 객체를 보려면, 대신 -m pickle
을 사용하는 것이 좋습니다. 그러나, 검사하려는 피클 파일이 신뢰할 수 없는 소스에서 왔을 때, 피클 바이트 코드를 실행하지 않으므로 -m pickletools
가 더 안전한 옵션입니다.
예를 들어, 튜플 (1, 2)
가 파일 x.pickle
에 피클 된 경우:
$ python -m pickle x.pickle
(1, 2)
$ python -m pickletools x.pickle
0: \x80 PROTO 3
2: K BININT1 1
4: K BININT1 2
6: \x86 TUPLE2
7: q BINPUT 0
9: . STOP
highest protocol among opcodes = 2
명령 줄 옵션¶
- -a, --annotate¶
각 줄에 짧은 opcode 설명으로 주석을 답니다.
- -o, --output=<file>¶
출력이 기록되어야 하는 파일의 이름.
- -l, --indentlevel=<num>¶
새 MARK 수준을 들여쓰기하는 공백의 수.
- -m, --memo¶
여러 객체가 역 어셈블될 때, 역 어셈블리 간에 메모를 보존합니다.
- -p, --preamble=<preamble>¶
하나 이상의 피클 파일이 지정될 때, 각 역 어셈블리 전에 주어진 프리앰블을 인쇄합니다.
프로그래밍 인터페이스¶
- pickletools.dis(pickle, out=None, memo=None, indentlevel=4, annotate=0)¶
피클의 기호적인 역 어셈블리를 기본값이
sys.stdout
인 파일류 객체 out으로 출력합니다. pickle는 문자열이나 파일류 객체가 될 수 있습니다. memo는 피클의 메모로 사용될 파이썬 딕셔너리일 수 있습니다; 같은 피클러로 만들어진 여러 피클에 걸쳐 역 어셈블리를 수행하는 데 사용할 수 있습니다. 스트림의MARK
옵코드로 표시된 연속 수준은 indentlevel개의 스페이스로 들여쓰기 됩니다. 0이 아닌 값이 annotate에 주어지면, 출력의 각 옵코드에 짧은 설명이 주석으로 표시됩니다. annotate 값은 주석을 시작해야 하는 열의 힌트로 사용됩니다.버전 3.2에서 변경: Added the annotate parameter.
- pickletools.genops(pickle)¶
피클의 모든 옵코드에 대해
(opcode, arg, pos)
트리플을 반환하는 이터레이터를 제공합니다. opcode는OpcodeInfo
클래스의 인스턴스입니다; arg는 옵코드 인자의 파이썬 객체로 디코딩된 값입니다; pos는 이 옵코드의 위치입니다. pickle은 문자열이나 파일류 객체가 될 수 있습니다.
- pickletools.optimize(picklestring)¶
사용되지 않는
PUT
옵코드를 제거한 후 새로운 동등한 피클 문자열을 반환합니다. 최적화된 피클은 더 짧고, 전송 시간이 덜 걸리며, 저장 공간이 덜 필요하고, 역 피클이 더 효율적입니다.