TL;DR: Если вы запускали программу Python хотя бы один раз, как я, вы можете найти файл pyc в папке __pycache__ и использовать декомпилятор, чтобы декомпилировать его обратно в файл Python.

Недавно я начал проходить последний курс Harvard CS50 по искусственному интеллекту и только что закончил задание по программированию. Прежде чем отправить и отпраздновать свой успех, я случайно перезаписал файл и потерял часы работы. Оказалось, я дважды открывал один и тот же файл и случайно сохранил более раннюю версию.



Прежде чем я оплакивал свою потерю, я инстинктивно знал, что должен быть какой-то способ восстановить файл, потому что я запустил файл с помощью интерпретатора Python в терминале 5 секунд назад.

Я провел небольшое исследование и нашел решение: в папке __pycache__ вы увидите скомпилированный файл .pyc, который скомпилирован интерпретатором. Мой degrees.cpython-36.pyc

Согласно документации Python:

Исходный код Python компилируется в байт-код, внутреннее представление программы Python в интерпретаторе CPython. Байт-код также кэшируется в файлах .pyc, так что выполнение одного и того же файла во второй раз происходит быстрее (можно избежать перекомпиляции из исходного кода в байт-код). Говорят, что этот «промежуточный язык» работает на виртуальной машине, которая выполняет машинный код, соответствующий каждому байт-коду.

Найдите декомпилятор, который работает с вашей версией Python, и декомпилируйте его обратно в файл Python. Я использовал кросс-версию Uncompyle6, и она отлично работала.

Однако, если вы не запустили свою программу или не нашли файл pyc, вам, к сожалению, придется копаться в памяти или на диске вашего компьютера и идти оттуда. Есть много программ, которые вы можете попробовать для этого.

И, конечно же, лучше всего использовать Git для контроля версий в первую очередь :)

Удачного кодирования!

Связаться:



Ссылка:

  1. https://stackoverflow.com/questions/5287253/можно ли-декомпилировать-а-скомпилировать-pyc-файл-в-а-py-файл