gpt4 book ai didi

python - 即时从 python 中的 subprocess.run() 获取输出

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:16 26 4
gpt4 key购买 nike

我想在 python 中运行一些 shell 命令,并且我想让它们即时输出(类似于它们在 bash 中的方式)。

为此,我使用:

import subprocess
cmd='''
x=1
while [ $x -le 5 ]; do
echo "$x"
x=$(( $x + 1 ))
sleep 2
done
'''
out=subprocess.run(cmd,
check=True, shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT)
out.stdout

问题:

  1. 但是,我只有在脚本结束时才能获得完整的输出。有没有办法随时获取它?
  2. 如果它是相关的,我实际上不需要从我的运行中获取任何东西(即不打算通过管道传输它或任何东西。)。我应该使用 os.system

最佳答案

您可以使用Popen

from subprocess import Popen, PIPE
cmd = '''
x=1
while [ $x -le 5 ]; do
echo "$x"
x=$(( $x + 1 ))
sleep 2
done
'''
out = Popen(
cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE
).communicate()[0].decode("utf-8")
print(out)

关于python - 即时从 python 中的 subprocess.run() 获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57147198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com