在交互式子shell中执行python脚本

在交互式子shell中执行python脚本

我有一个需要在交互式 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)

这是该库的文档subproecsshttps://docs.python.org/3/library/subprocess.html

我希望这个答案对你有帮助:)

相关内容