gpt4 book ai didi

python - STDOUT 中的子进程或 commands.getstatusoutput 并存储在变量中

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:52 26 4
gpt4 key购买 nike

我想要这样的东西运行“ls”命令并在 STDOUT 上输出,并希望将相同的输出存储在变量中

对于长时间运行的进程,我需要在屏幕上看到执行输出,最后捕获变量

proc = subprocess.Popen(["ls"], stdout=subprocess.PIPE, shell=False)
(out, err) = proc.communicate()
print "program output:-", out

这里是执行后的输出

最佳答案

要在子进程刷新其标准输出后立即逐行打印输出以将其存储在变量中:

from subprocess import Popen, PIPE

buf = []
proc = Popen([cmd], stdout=PIPE, bufsize=1)
for line in iter(proc.stdout.readline, b''):
buf.append(line)
print line,
proc.communicate() # close `proc.stdout`; wait for the child process to exit
output = b"".join(buf)

可能有 a buffering issue (输出出现延迟);要修复它,您可以使用 pexpect, pty modulesstdbuf, unbuffer, script commands .

关于python - STDOUT 中的子进程或 commands.getstatusoutput 并存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17065043/

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