Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。
在使用git的过程中我方了(对错误的文件使用git checkout --),我一不小心删除了自己刚写的代码...不过这个代码还作为一个进程在一个docker容器中运行着。接下来我要讲讲我是如何找回代码的:我使用了https://pypi.python.org/pypi/pyrasite/和https://pypi.python.org/pypi/uncompyle6。
将一个Shell附着到Docker容器上
安装GDB(pyrasite需要)apt-get update && apt-get install gdb
安装pyrasite,它让你能够跟正在运行的进程通信pip install pyrasite
安装uncomplyle6,它能让你获取内存中存在的对象的源代码pip install uncompyle6
找到正在运行的进程的PIDps aux | grep python
使用pyrasite附着一个交互提示符pyrasite-shell
现在你在交互终端中了,导入你要恢复的代码>>> from my_package import my_module
找出你需要恢复的函数和类>>> dir(my_module)
['MyClass', 'my_function']
把函数源代码提取出来>>> import uncompyle6
>>> import sys
>>> uncompyle6.main.uncompyle(
2.7, my_module.my_function.func_code, sys.stdou