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