Skip to main content
 首页 » 编程设计

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

2025年05月04日15unruledboy

我想要这样的东西 运行“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 modules或 stdbuf, unbuffer, script commands .