在Python脚本中如何运行具有“实时”输出的bash脚本?

5
我想知道是否可以在Python脚本中运行一个Bash脚本并实时获取其输出(不是在Python脚本运行完Bash脚本后再获取输出,我知道如何做到这一点)。
你可能会问我为什么要使用Python脚本:实际上,我想构建一个漂亮的CLI界面,并使用Inquirer来实现。该界面允许用户执行使用Bash脚本实际执行的任务。这就是为什么我不使用执行其他脚本的Bash脚本的原因。

请分享一些你目前所完成的代码。 - Nikaido
1
你需要使用subprocess.Popen类并捕获输出文件(stderrstdout)。 - Kendas
你想要“实时”捕获终端输入数据吗? - moe asal
我想捕获脚本输出并实时打印出来,而不是等待bash脚本执行结束。milanbalazs的答案准确地解决了我的问题! - RWIN
1个回答

6
您可以使用以下实现来实时获取shell脚本的STDOUT输出。
代码:
```sh #!/bin/bash while read line do echo $line done < <(./your_shell_script.sh) ```
cmd="whoami"
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1)
for line in iter(p.stdout.readline, b''):
    print(line)
p.stdout.close()
p.wait()

输出:

>>> python3 test.py 
b'milanbalazs\n'

谢谢,这正是我想要做的! - RWIN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接