Spec-Zone.ru › Python 3.13

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

При дизассемблировании нескольких объектов сохраняет memo между дизассемблированиями.

-p, --preamble=<preamble>

При указании нескольких файлов pickle выводит заданный преамбулу перед каждым дизассемблированием.

Программный интерфейс

pickletools.dis(pickle, out=None, memo=None, indentlevel=4, annotate=0)

Выводит символическую дизассемблирование pickle в объект-подобный файл out, по умолчанию sys.stdout. pickle может быть строкой или объектом, похожим на файл. memo может быть словарем Python, который будет использоваться в качестве memo pickle; он может быть использован для выполнения дизассемблирования нескольких 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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/pickletools.html

Spec-Zone.ru

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