擅长:python、mysql、java
<p>好的,我通过使用这个问题的一个片段<a href="https://stackoverflow.com/questions/527197/intercepting-stdout-of-a-subprocess-while-it-is-running">Intercepting stdout of a subprocess while it is running</a>在没有线程的情况下解决了这个问题(任何关于为什么使用线程会更好的建议都会受到赞赏)</p>
<pre><code>def execute(command):
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
# Poll process for new output until finished
while True:
nextline = process.stdout.readline()
if nextline == '' and process.poll() is not None:
break
sys.stdout.write(nextline)
sys.stdout.flush()
output = process.communicate()[0]
exitCode = process.returncode
if (exitCode == 0):
return output
else:
raise ProcessException(command, exitCode, output)
</code></pre>