如何运行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
相关产品推荐
相关产品推荐

