Python脚本如何获取导入它的上层文件的完整源代码?
实现方法
核心依赖Python自带的inspect模块获取调用栈,定位到导入analyzer.py的主脚本位置,读取源码即可实现需求,具体实现如下:
analyzer.py 完整示例代码
import inspect import os # 遍历调用栈找到__main__对应的主脚本栈帧 for frame_info in inspect.stack(): if frame_info.frame.f_globals.get("__name__") == "__main__": main_script_path = frame_info.filename break else: # 未找到主脚本(通常是交互式运行场景) main_script_path = None # 读取主脚本源码并执行分析 if main_script_path and os.path.isfile(main_script_path): with open(main_script_path, "r", encoding="utf-8") as f: main_code = f.read() # 你的分析逻辑写在这里,示例:检测是否包含print关键字 if "print" in main_code: print("检测到主脚本包含print关键字") else: print("检测到主脚本不包含print关键字")
注意事项
- 仅对落地为本地文件的主脚本生效,交互式运行场景(REPL、Jupyter Notebook等)无法获取到对应文件路径
- 若主脚本运行时存在动态修改、未保存到本地的内容,读取到的源码为文件最后保存的版本
- 建议明确指定文件读取编码,避免跨系统运行时出现编码错误
内容的提问来源于stack exchange,提问作者Roberto Tricarico
相关产品推荐
相关产品推荐

