编辑:哎呀!我不小心发布了与我的问题不符的代码。我在完成实验之前就开始写这篇文章,所以我从测试过程的中间点发布了代码。我已经修改了这个问题,以通过稍微更改代码来反映我真正想要发布的内容。
以下 Python 代码按预期工作,但存在一个问题:除非 I If verbose == False,否则不会创建由 Perl 脚本生成的文件。为什么我必须为底层 Perl 脚本调用 output.stdout.read() 才能成功创建文件?
cmdStringList = ["perl","script.pl","arg1",...]
output = subprocess.Popen(cmdStringList,stdout=subprocess.PIPE)
if verbose:
print output.stdout.read()
在我尝试在生产环境中使用 verbose=False 执行 Python 脚本之前,我什至没有意识到有什么问题。我做了一些 google-fu 试图了解 Popen 和子进程的行为,但我还没有想出这种行为的原因。任何帮助将不胜感激。