Я заметил этот вопрос несколько раз на SO, но ни один из ответов, похоже, не применим к версии Python 3.6.Как и в большинстве случаев, когда это запрашивается, я случайно удалил исходный файл .py, но у меня все еще есть .exe, собранный с помощью pyinstaller (передавая только аргументы --onefile и --icon).
Мне удалось связатьсяследующий пункт:
- Ran pyinstxtractor.py в .exe, который я упоминал выше.Это дало мне кучу файлов, в том числе один без расширения, который на самом деле является .pyc исходного файла без магического числа.
- Переименовал файл без расширения, чтобы получить расширение .pyc
- Использовал шестнадцатеричный редактор для добавления магического числа в файл .pyc, используя заголовок из другого файла .pyc (в этом примере использовали
__future__
).Похоже, this . - Запустил uncompyle6 для файла .pyc, который теперь имеет правильный магический номер, но операции завершаются неудачно, как видно здесь .Часть кода извлечена (около 15%), но эта важная часть просто запутана байт-кодом.
Любые другие инструменты, с которыми мне приходилось сталкиваться, не работают на Python 3.6, такие как Easy Python Decompiler, unpyclib, pyREtic.
Мне не удалось использовать pycdc / Decompyle ++ или Maynard, поскольку я не понимаю, как они работают, но они все еще не поддерживают 3.6.
Что-нибудьиначе я мог бы попробовать?
PS: Моя ОС - Win7, и я попробовал программное обеспечение для восстановления файлов и откат системы, ни один из которых не работал.