![在交互式子shell中执行python脚本](https://linux22.com/image/1634481/%E5%9C%A8%E4%BA%A4%E4%BA%92%E5%BC%8F%E5%AD%90shell%E4%B8%AD%E6%89%A7%E8%A1%8Cpython%E8%84%9A%E6%9C%AC.png)
我有一个需要在交互式 shell 中运行的 Python 脚本(它监视某些取消键输入事件,而我不需要这些事件)。我想在后台执行此脚本,获取其输出,然后在 5 秒后将其终止。
gnome-terminal -- "./script.sh > log.log"
或 gnome-terminal -x bash -c "./script.sh > log.log"
不起作用,因为它不是一个交互式 shell...
我正在使用标准的 ubuntu 1804 设置。如何在启用输入的终端中执行此脚本?
答案1
我相信使用subprocess
图书馆会对你想要做的事情有所帮助。
这是一个例子(根据问题):
import subprocess
import shlex
command = shlex.split("<your command to run the script>")
process = subprocess.Popen(command)
try:
outs, errs = process.communicate(timeout=5)
except TimeoutExpired:
process.kill()
outs, errs = process.communicate()
# Now you can write the output into a file, like so:
with open("path_to_log_file", "w") as log_file:
f.write(outs)
这是该库的文档subproecss
:https://docs.python.org/3/library/subprocess.html
我希望这个答案对你有帮助:)