使用python在新终端中启动shell脚本并获取退出代码

vd8tlhqk  于 2023-03-09  发布在  Shell
关注(0)|答案(1)|浏览(120)

我目前正在尝试通过python在一个新的终端上运行一个shell脚本。到目前为止,它正在运行,我现在的问题是,我还需要那个shell脚本的退出代码。根据成功执行与否,脚本返回不同的退出代码,我需要得到它们,以便我可以继续在python中使用它们。我的代码现在看起来像这样:

process = subprocess.Popen(['gnome-terminal', '-x', './myscript.sh'])
    text = process.communicate()[0]
    exit_code = process.returncode
    print(text, exit_code)

我可能还需要一个等待函数,因为脚本需要几秒钟才能完成执行。有人知道我是怎么做到的吗?

n3schb8v

n3schb8v1#

正如评论中提到的@tjm3772,subprocess.run可能就是你想要的。

import subprocess

process = subprocess.run(['bash', './bash_script.sh'], capture_output=True, timeout=120)
text = process.stdout
exit_code = process.returncode
print(text, exit_code)

capture_outputtimeout都是可选的。timeout以秒为单位。正如您将在文档中看到的,如果需要,还有许多其他选项。
run返回一个CompletedProcess对象,表示一个已经完成的进程,所以不必担心(在Python代码中)shell脚本可能需要多长时间等等(除了可能需要一个timeout,如上所述,以覆盖脚本挂起/花费太长时间的可能场景)。

相关问题