如何在新终端启动Python脚本并通过文件自动提供交互输入?
解决方法
1. 修正输入文件格式
把commands.txt里的\r换成实际换行,直接用编辑器输入每行内容后按回车保存,最终文件内容应该是:
1 2 3
不用手动写\r这类转义字符,Unix/Linux环境下默认用\n作为换行符,Python的input()会识别这种换行作为输入结束信号。
2. 调整启动脚本的命令
原来的重定向写法无效,因为gnome-terminal会把重定向参数当成自己的输入,而不是传给里面的Python进程。需要用bash -c包裹命令,让重定向作用到Python脚本上:
#!/bin/bash gnome-terminal -- bash -c "python3 test.py < commands.txt; exec bash"
末尾的exec bash是为了执行完Python脚本后保持终端窗口打开,方便查看输出;如果不需要保留终端,直接去掉即可。
为什么之前的方法不行?
- 输入文件里的
\r是Windows风格的回车符,Unix环境下Python的input()不会把它当成输入结束的信号,导致无法正确读取输入。 - 直接在
gnome-terminal --后面加重定向,重定向是应用于gnome-terminal进程本身,而不是它启动的Python进程,所以输入文件内容根本没传给脚本。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

