Spec-Zone.ru › Python 3.11

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, созданных одним и тем же пиклером. Уровни, указанные кодами операций 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–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/pickletools.html

Spec-Zone.ru

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