pickletools — pickle 개발자를 위한 도구
pickletools — pickle 개발자를 위한 도구
pickletools 모듈은 pickle 모듈의 세부 내부에 관한 다양한 상수, 구현에 관한 긴 주석, 그리고 피클 데이터를 분석하는 몇 가지 유용한 함수를 포함해요. 이 모듈의 내용은 pickle 을 작업하는 파이썬 핵심 개발자에게 유용해요. pickle 의 일반 사용자에게는 별로 관련이 없을 수도 있어요.
본문
커맨드라인 사용법 (Command-line usage)
커맨드라인에서 호출하면 python -m pickletools 가 하나 이상의 pickle 파일의 내용을 역어셈블(disassemble)해요. pickle 에 저장된 파이썬 객체 자체를 보고 싶다면 -m pickle 를 사용하는 게 나을 수 있어요. 다만 신뢰할 수 없는 소스의 pickle 파일을 검사할 때는 -m pickletools 가 더 안전한데, pickle 바이트코드를 실행하지 않기 때문이에요.
예를 들어 파일 x.pickle 에 튜플 (1, 2) 가 피클되어 있다면:
$ 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
커맨드라인 옵션 (Command-line options)
- -a, --annotate — 각 줄에 짧은 opcode 설명을 주석으로 달아요.
- -o, --output=
— 출력을 쓸 파일 이름. - -l, --indentlevel=
— 새 MARK 레벨을 들여쓸 공백 수. - -m, --memo — 여러 객체를 역어셈블할 때 역어셈블 간에 memo 를 보존해요.
- -p, --preamble=
— pickle 파일이 여러 개면 각 역어셈블 앞에 주어진 preamble 을 출력해요. - pickle_file — 읽을 pickle 파일 또는 표준 입력을 나타내는
-.
프로그래매틱 인터페이스 (Programmatic interface)
- pickletools.dis(pickle, out=None, memo=None, indentlevel=4, annotate=0) — pickle 의 기호 역어셈블을 파일류 객체 out 에 출력해요(기본
sys.stdout). pickle 은 문자열 또는 파일류 객체일 수 있어요. memo 는 pickle 의 memo 로 사용할 파이썬 딕셔너리이며, 같은 피컬러가 만든 여러 pickle 에 걸친 역어셈블에 사용할 수 있어요. 스트림의MARKopcode 로 표시되는 연속 레벨은 indentlevel 공백으로 들여써요. annotate 에 0이 아닌 값을 주면 각 opcode 를 짧은 설명으로 주석 처리해요. 버전 3.2에서 annotate 매개변수 추가. - pickletools.genops(pickle) — pickle 의 모든 opcode에 대한 이터레이터를 제공하며
(opcode, arg, pos)트리플 시퀀스를 반환해요. opcode 는OpcodeInfo클래스 인스턴스, arg 는 opcode 인자의 디코딩된 값, pos 는 opcode 가 위치한 위치예요. - pickletools.optimize(picklestring) — 사용하지 않는
PUTopcode 를 제거한 뒤 동등한 새 pickle 문자열을 반환해요. 최적화된 pickle 은 더 짧아 전송 시간·저장 공간이 덜 들고 더 효율적으로 언피클돼요.