我正在使用Python脚本通过subprocess.Popen
运行进程,同时将输出存储在文本文件中并打印到控制台。 这是我的代码:
result = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in result.stdout.readlines(): #read and store result in log file
openfile.write("%s\n" %line)
print("%s" %line)
上述代码运行良好,但它的做法是首先完成整个过程并将输出存储在result变量中,然后for循环存储输出并打印输出。
但我希望能够在运行时得到输出(因为我的进程可能需要数小时才能完成,这几个小时内我无法得到任何输出)。
因此,是否有其他函数可以动态地给我输出(即当进程给出第一行时,应立即打印)。
result.stdout
设置为非阻塞的,这样可以实时读取数据,如果还没有数据,就会引发IOError
异常。 - EmilioPeJu