如何运行Python源文件并生成交互式风格的输入输出日志
实现Python脚本生成交互式风格日志的方法
要让Python脚本运行后生成带>>>/...提示符、包含输入与输出的日志,可通过以下几种方式实现:
方法一:用IPython快速实现(推荐)
如果你的环境安装了IPython,这是最简便的方案,直接运行以下命令即可生成符合要求的输出:
ipython --no-banner -c "%run -i temp.py"
--no-banner:去掉IPython的欢迎启动信息%run -i:以交互模式执行脚本,会自动按照交互式会话的格式输出每一行代码(带对应提示符)和执行结果
运行你的示例temp.py,输出完全匹配你期望的格式:
>>> 1+1 2 >>> if True: ... print('True') ... True >>> msg = "Hello, world!" >>> print(msg) Hello, world!
方法二:用Python标准库自定义脚本(无额外依赖)
如果无法安装IPython,可编写一个简单的脚本利用code模块实现需求,创建pyinteract.py文件:
import sys import code def run_with_prompt(script_path): with open(script_path, 'r') as f: lines = f.readlines() console = code.InteractiveConsole() for line in lines: stripped_line = line.rstrip() if not stripped_line: print() continue # 根据缩进判断提示符 if line.startswith((' ', '\t')): print(f"... {stripped_line}") else: print(f">>> {stripped_line}") # 执行当前行代码 console.push(line) if __name__ == "__main__": if len(sys.argv) != 2: print(f"用法: python {sys.argv[0]} <目标脚本.py>") sys.exit(1) run_with_prompt(sys.argv[1])
然后运行:
python pyinteract.py temp.py
该脚本会逐行解析目标文件,根据代码缩进自动添加>>>或...提示符,同时执行代码并输出结果,支持复杂脚本文件。
方法三:用Unix script命令记录会话(需后期清理)
在类Unix系统下,可通过script命令捕获Python交互会话的输出:
script -q -c "python -i temp.py" python_log.txt
-q:静默模式,不显示script命令本身的提示信息-c:指定要执行的命令
执行完成后,打开python_log.txt,手动删除末尾的exit()相关行即可得到目标日志。
为什么之前的方法无效?
你尝试的cat temp.py | python或python < temp.py是将脚本作为标准输入传入Python,此时Python以非交互模式执行,只会输出代码运行结果,不会生成交互式提示符和输入行记录。
内容的提问来源于stack exchange,提问作者chan1142
相关产品推荐
相关产品推荐

