pickletools– 用于泡菜开发者的工具

源代码: Lib / pickletools.py


这个模块包含与pickle模块的私密细节相关的各种常量,关于实施的一些冗长的评论,以及用于分析腌制数据的有用功能。这个模块的内容对于pickle工作的Python核心开发人员很有用; pickle模块的普通用户可能找不到pickletools模块相关的

命令行用法

版本3.2.

中的新增内容从命令行调用时,python -m pickletools反汇编一个或多个pickle文件的内容。请注意,如果您想要查看存储在pickle中的Python对象而不是pickle格式的详细信息,则可能需要使用-m pickle。但是,当您要检查的pickle文件来自不受信任的源时,-m pickletools是一个更安全的选项,因为它不执行pickle bytecode.

例如,用文件(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
使用短操作码描述注释每一行.
-o, --output=<file>
应该写入输出的文件的名称.
-l, --indentlevel=<num>
缩进新MARK级别的空白数量.
-m, --memo
拆卸多个物体时,请保存备忘录。
-p, --preamble=<preamble>
如果指定了多个pickle文件,请在每次拆卸前打印给定的前导码.

程序界面

pickletools.dispickle, out=None, memo=None, indentlevel=4, annotate=0
pickle的符号反汇编输出到文件对象out,默认为sys.stdout. pickle可以是astring或类文件对象。memo可以是一个Python词典,它将被用作pickle的备忘录;它可用于在samepickler创建的多个pickle之间执行disassemblies。连续的水平,由表示MARK在流中的操作码,由indentlevel空格缩进。如果给annotate赋予非零值,则输出中的每个操作码都用简短描述注释。的价值 annotate用作注释应该开始的列的提示.

新版本3.2: annotate论据

pickletools.genops// (pickle
提供迭代器泡菜的所有操作码中,返回(opcode, arg, pos)三倍的序列。opcodeOpcodeInfo类的一个实例;arg是操作码参数的解码值,作为Python对象;pos是这个操作码所在的位置.pickle可以是一个字符串或类似文件的对象.
pickletools.optimize (picklestring)
返回一个新的消除未使用的PUT操作码。优化的泡菜更短,传输时间更短,存储空间更小,更有效地破坏.

评论被关闭。