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

RWI*_*WIN 5 python shell

我想知道是否可以在 Python 脚本中运行 bash 脚本并“实时”获取 bash 脚本输出(不是在 Python 脚本运行 bash 脚本之后,我知道该怎么做)。

您可能会问我为什么要使用 Python 脚本:实际上我想构建一个漂亮的 CLI 界面,并且我正在使用 Inquirer 来做到这一点。该界面允许用户执行实际使用 bash 脚本执行的任务。这就是为什么我不使用执行其他脚本的 bash 脚本。

mil*_*azs 6

您可以使用以下实现来实时获取 shell 脚本的 STDOUT。

代码:

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()
Run Code Online (Sandbox Code Playgroud)

输出:

>>> python3 test.py 
b'milanbalazs\n'
Run Code Online (Sandbox Code Playgroud)