You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 18:18:11