Spec-Zone.ru › Python 3.10

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

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

Этот модуль содержит различные константы, относящиеся к деталям модуля 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>

Количество пробелов для отступа новой метки уровня.

-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, каждый opcode в выводе аннотирован коротким описанием. Значение 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.10/library/pickletools.html

Spec-Zone.ru

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