Spec-Zone.ru › Python 3.7

pickletools — Инструменты для разработчиков pickle

Исходный код: Lib/pickletools.py

Этот модуль содержит различные константы, относящиеся к интимным деталям модуля pickle, некоторые длинные комментарии об реализации и несколько полезных функций для анализа данных, закодированных в формате pickle. Содержимое этого модуля полезно для разработчиков Python, работающих над pickle; обычным пользователям модуля pickle модуль pickletools вряд ли будет полезен.

Использование в командной строке

Введено в версии 3.2.

При вызове из командной строки python -m pickletools выполнит дизассемблирование содержимого одного или нескольких файлов pickle. Обратите внимание, что если вы хотите увидеть объект Python, хранящийся в pickle, а не детали формата pickle, вы можете использовать -m pickle вместо этого. Однако, если файл pickle, который вы хотите просмотреть, получен из ненадежного источника, -m pickletools является более безопасным вариантом, поскольку он не выполняет байткод pickle.

Например, с кортежем (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.dis(pickle, out=None, memo=None, indentlevel=4, annotate=0)

Выводит символическое дизассемблирование pickle в объект файла out, по умолчанию sys.stdout. pickle может быть строкой или объектом файла. memo может быть словарем Python, который будет использоваться в качестве запоминания pickle; он может использоваться для выполнения дизассемблирования по нескольким pickle, созданным одним и тем же объектом pickler. Уровни, обозначенные кодами операций MARK в потоке, отступаются на indentlevel пробелов. Если ненулевое значение задано для annotate, каждый код операции в выводе снабжается коротким описанием. Значение annotate используется как подсказка для столбца, где должно начинаться аннотация.

Введено в версии 3.2: Аргумент annotate.

pickletools.genops(pickle)

Обеспечивает итератор по всем кодам операций в pickle, возвращая последовательность (opcode, arg, pos) троек. opcode — экземпляр класса OpcodeInfo; arg — декодированное значение аргумента кода операции как объект Python; pos — позиция, в которой находится этот код операции. pickle может быть строкой или объектом файла.

pickletools.optimize(picklestring)

Возвращает новую эквивалентную строку pickle после устранения неиспользуемых PUT кодов операций. Оптимизированный pickle короче, требует меньше времени для передачи, занимает меньше места в хранилище и распаковывается более эффективно.

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/pickletools.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API