如何将Python脚本的代码与运行输出同时写入外部文件?
简便实现Python脚本代码与输出同存的方法
Hey there! 我有几个简单的办法帮你实现这个需求,不用额外复杂工具,靠Python本身或小脚本就能搞定:
方法1:修改原脚本,让它自动生成带输出的文件
直接在脚本里加入读取自身代码、记录输出并合并写入的逻辑,运行后就能直接得到目标文件:
import random from statistics import median, mean # 读取当前脚本的代码内容 with open(__file__, 'r', encoding='utf-8') as f: script_code = f.read() # 执行原有业务逻辑 d = [random.random()**2 for _ in range(1000)] d_mean = round(mean(d), 2) mean_output = f'mean: {d_mean}' print(mean_output) d_median = round(median(d), 2) median_output = f'median: {d_median}' print(median_output) # 把代码和对应输出按格式拼接 result_lines = [] for line in script_code.split('\n'): result_lines.append(line) # 匹配print语句,插入对应的输出 if line.strip().startswith('print(f\'mean:'): result_lines.append(f'>> {mean_output}') elif line.strip().startswith('print(f\'median:'): result_lines.append(f'>> {median_output}') # 写入最终文件 with open('outtest_with_output.txt', 'w', encoding='utf-8') as f: f.write('\n'.join(result_lines))
运行修改后的脚本,会自动生成outtest_with_output.txt,格式完全符合你的要求。
方法2:用外部包装脚本,不改动原代码
如果不想修改业务脚本,写一个小包装脚本来实现代码与输出的合并:
import subprocess import re # 读取原脚本的代码行 with open('outtest.py', 'r', encoding='utf-8') as f: code_lines = f.read().split('\n') # 执行原脚本并捕获输出 run_result = subprocess.run(['python3', 'outtest.py'], capture_output=True, text=True) output_lines = run_result.stdout.strip().split('\n') # 匹配代码中的print语句,对应插入输出 final_content = [] output_index = 0 for line in code_lines: final_content.append(line) # 匹配目标print语句 if re.match(r'print\(f\'(mean|median):', line.strip()) and output_index < len(output_lines): final_content.append(f'>> {output_lines[output_index]}') output_index += 1 # 写入合并后的文件 with open('outtest_combined.txt', 'w', encoding='utf-8') as f: f.write('\n'.join(final_content))
把这个wrap_script.py和你的outtest.py放在同一目录,运行python3 wrap_script.py即可生成目标文件,全程不需要改动原业务代码。
方法3:借助IPython魔法命令(如果有IPython环境)
如果你已经安装了IPython,可以用它的内置魔法命令快速实现:
ipython
进入IPython会话后执行:
%run outtest.py # 保存会话中的代码和输出到文件,1-10是对应行号,可根据实际调整 %save -r outtest_combined.py 1-10
这个方法适合平时常用IPython的场景,操作更快捷。
内容的提问来源于stack exchange,提问作者pieca
相关产品推荐
相关产品推荐

