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

如何运行Python脚本并逐行回显执行命令及对应输出

如何运行Python脚本并逐行回显执行命令及对应输出

嘿,我完全懂你的需求——就是要实现像手动在Python交互式shell里逐行敲命令那样的效果:每执行一行代码,先显示这行命令本身,再输出执行结果,最后把这个完整的会话记录放到你的库README里当示例,对吧?我给你分享两个实用的办法:

方法一:用Python内置模块写个小驱动脚本

这个方法跨平台,不管是Windows Console还是WezTerm都能用,而且不用装任何额外工具,完全靠Python自带的模块实现。

首先,新建一个叫run_with_echo.py的文件,把下面的代码放进去:

import code
import sys

def run_script_with_echo(script_path):
    # 启动一个Python交互式解释器环境
    shell = code.InteractiveConsole(locals=globals())
    # 读取目标脚本的每一行,过滤掉空行和多余换行
    with open(script_path, 'r') as f:
        script_lines = [line.rstrip('\n') for line in f if line.strip()]

    for cmd_line in script_lines:
        # 先打印要执行的命令行,模拟shell的提示符效果
        print(f"> {cmd_line}")
        # 执行这一行代码,自动输出执行结果
        shell.push(cmd_line)

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("用法:python run_with_echo.py <你的脚本文件路径>")
        sys.exit(1)
    run_script_with_echo(sys.argv[1])

然后把你要演示的myscript.py准备好:

print("Hello")
a = 4
print(f"{a=}")

现在在控制台里运行这个驱动脚本:

python run_with_echo.py myscript.py

你就能得到完全符合预期的输出了:

> print("Hello")
Hello
> a = 4
> print(f"{a=}")
a=4

直接把这个输出复制到你的README里就行,完美适配你的示例需求。

方法二:Unix-like环境下用script命令(WezTerm/Linux/macOS)

如果你用的是支持Unix命令的终端(比如WezTerm在Linux/macOS下,或者Windows的WSL环境),也可以用系统自带的script命令来记录完整会话:

  • 先运行script --flush -q python_session.log,这个命令会启动一个记录会话的子shell,--flush确保输出实时写入文件,-q是静默模式不显示额外提示。
  • 然后在这个子shell里手动逐行输入你的脚本代码,每输一行按回车执行,这样就会完整记录下每一行命令和对应的输出。
  • 执行完后输入exit结束会话,记录的内容会存在python_session.log里。
  • 打开这个日志文件,把里面的核心会话内容(去掉开头结尾的script命令提示)复制到README就行。

不过这个方法适合短脚本,要是脚本行数多,还是方法一更高效。

顺带说下为什么直接粘贴不行:当你把整个脚本一次性粘贴到控制台时,Python解释器会把所有粘贴的内容当成一个整体的代码块来执行,它会先把所有粘贴的代码都显示出来,然后一次性跑完所有代码再输出结果,所以就会出现你遇到的“先看到所有代码,再看到所有输出”的情况。

备注:内容来源于stack exchange,提问作者robertspierre

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:19:29