Spec-Zone.ru › Python 3.5

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

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

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

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

Введено в версии 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

1.1. Параметры командной строки

-a, --annotate

Добавляет к каждой строке краткое описание кода операции.

-o, --output=<file>

Имя файла, куда должен быть записан вывод.

-l, --indentlevel=<num>

Количество пробелов для отступа нового уровня MARK.

-m, --memo

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

-p, --preamble=<preamble>

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

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

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

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

Spec-Zone.ru

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