如何从运行中的Jupyter Notebook恢复已删除的导入.py文件源代码?
恢复已删除导入模块源码的方法
只要运行Jupyter Notebook的Python内核还未重启,已经加载到内存中的模块、类、函数的源代码均可通过Python标准库inspect提取,无需额外工具。
操作步骤
- 第一步:导入所需标准库
import inspect import sys
- 第二步:按需求选择恢复方式
- 恢复单个类/函数的源码(以你场景中的
Parser类为例)
直接调用inspect.getsource()即可获取目标对象的完整源码,可直接写入文件完成恢复:
# 提取Parser类源码 parser_source = inspect.getsource(Parser) # 写入新的py文件 with open("parser_recovered.py", "w", encoding="utf-8") as f: f.write(parser_source)- 恢复整个被删除的.py模块的全部源码
如果你需要恢复整个模块内的所有代码(包括其他未直接导入的函数、类、全局定义),可以先从已加载的模块列表中取出对应模块,再提取全量源码:
# 从已加载模块列表中取出parser模块 parser_module = sys.modules["parser"] # 提取整个模块的完整源码 full_module_source = inspect.getsource(parser_module) # 写入新的py文件 with open("parser_full_recovered.py", "w", encoding="utf-8") as f: f.write(full_module_source) - 恢复单个类/函数的源码(以你场景中的
注意事项
- 该方法仅适用于纯Python编写的模块,你自己编写的.py文件均符合要求,C扩展类/函数无法用该方式提取源码。
- 提取到源码后请尽快保存到本地持久化存储,内核重启后内存中的模块数据会被清空,无法再恢复。
内容的提问来源于stack exchange,提问作者Fatih Beyhan
相关产品推荐
相关产品推荐

