Spec-Zone.ru › Python 3.8

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, созданных одним и тем же 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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/pickletools.html

Spec-Zone.ru

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