我有一个运行其他shell脚本的python(v3.3)脚本。我的python脚本还会打印“关于运行脚本X”和“完成运行脚本X”等消息。python subprocess.call输出不是交织的
当我运行我的脚本时,我得到了与我的打印语句分开的shell脚本的所有输出。我看到这样的事情:
All of script X's output
All of script Y's output
All of script Z's output
About to run script X
Done running script X
About to run script Y
Done running script Y
About to run script Z
Done running script Z
我的代码运行shell脚本如下:
print("running command: " + cmnd)
ret_code = subprocess.call(cmnd, shell=True)
print("done running command")
我写了一个基本的测试脚本和做 *不*看到此行为。此代码做我期望的:
print("calling")
ret_code = subprocess.call("/bin/ls -la", shell=True)
print("back")
任何想法为什么输出不交错?
很好找。这是非常pythonic!很高兴为你工作。 – VooDooNOFX
注意:在Python 3.3中,你可以使用'in line in process.stdout:'而不是'iter(...)'。此外,你可以使用'print(line,end ='',flush = True)'而不是'line.replace('\ n','');打印(线); sys.stdout.flush()'或使用'line = line.rstrip('\ n')'。在循环后调用'process.stdout.close()'。 – jfs