Spec-Zone.ru › Python 3.6

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

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

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

32.13.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

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

-a, --annotate

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

-o, --output=<file>

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

-l, --indentlevel=<num>

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

-m, --memo

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

-p, --preamble=<preamble>

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

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

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

Выводит символическое развёртывание pickle в объект файла out, по умолчанию sys.stdout. pickle может быть строкой или объектом файла. memo может быть словарем Python, который будет использоваться в качестве запоминания pickle; он может быть использован для разбора нескольких pickle, созданных тем же pickler-ом. Уровни, указанные кодами операций 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.6/library/pickletools.html

Spec-Zone.ru

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