You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何运行Python脚本并在控制台回显每行执行的命令

如何运行Python脚本并在控制台回显每行执行的命令

我之前也刚好遇到过一模一样的需求——想让脚本运行时,像在Python交互式环境里那样,先把要执行的代码行显示出来,再输出运行结果。给你分享两个简单好用的方法,看你哪种顺手:


方法一:用Python自带的trace模块(无需额外写脚本)

Python自带的trace模块本来是用来跟踪代码执行流程的,稍微处理下输出就能完美匹配你的需求,完全不用额外写代码。

操作步骤:

直接在控制台敲下面的命令就行:

python -m trace -t myscript.py | grep -v "^\---" | sed 's/.*(.*): /> /'

输出效果:

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

简单解释下命令各部分的作用:

  • python -m trace -t myscript.py:调用trace模块跟踪脚本的每一行执行,会输出每行代码的位置和内容
  • grep -v "^\---":过滤掉trace模块自带的多余分割线(比如--- modulename: myscript, funcname: <module>这类没用的内容)
  • sed 's/.*(.*): /> /':把trace输出的myscript.py(1): print("Hello")格式,替换成你想要的> print("Hello")样式

如果你用的是Windows系统(没有grep和sed),可以用PowerShell的替代命令:

python -m trace -t myscript.py | Where-Object { $_ -notlike "---*" } | ForEach-Object { $_ -replace '.*\(.*\): ', '> ' }

方法二:自己写个小包装脚本(更灵活)

如果不想折腾命令行管道,或者需要定制输出格式,写个简单的包装脚本会更方便,还能自己调整细节。

操作步骤:

  1. 新建一个叫run_with_echo.py的文件,内容如下:
import sys

# 检查输入参数是否正确
if len(sys.argv) != 2:
    print("用法:python run_with_echo.py <你的脚本文件名>")
    sys.exit(1)

script_path = sys.argv[1]

# 读取目标脚本的所有行,自动过滤空行
with open(script_path, 'r', encoding='utf-8') as f:
    script_lines = [line.rstrip('\n') for line in f if line.strip()]

# 逐行打印代码并执行
for line in script_lines:
    print(f"> {line}")
    exec(line)
  1. 然后在控制台运行你的脚本:
python run_with_echo.py myscript.py
  1. 直接就能得到你想要的输出效果。

小提醒:

这个方法用了exec()函数,只适合运行你自己写的、安全可靠的脚本,别用来执行未知来源的代码哦。另外如果你的脚本里有多行代码块(比如if判断、函数定义),逐行执行可能会出问题,这时候用trace模块的方法会更靠谱,它能正确识别代码块的执行逻辑。

火山引擎 最新活动