Spec-Zone.ru › Python 3.9

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 в объект типа file-like out, по умолчанию в sys.stdout. pickle может быть строкой или объектом типа file-like. memo может быть словарем Python, который будет использоваться в качестве memo pickle; он может использоваться для выполнения дизассемблирования через несколько pickle, созданных одним и тем же pickler. Уровни, обозначенные операторами MARK в потоке, отступаются на indentlevel пробелов. Если ненулевое значение дано annotate, каждый оператор в выводе снабжается коротким описанием. Значение annotate используется как подсказка для столбца, в котором должно начинаться аннотация.

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

pickletools.genops(pickle)

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

pickletools.optimize(picklestring)

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

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

Spec-Zone.ru

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