【发布时间】:2012-01-26 23:28:14
【问题描述】:
代码:
proc=subprocess.Popen(['sh',shFile],stderr=subprocess.PIPE,stdout=subprocess.PIPE)
out,err = proc.communicate()
问题:
第 1 行中的shFile 运行多个 shell 脚本。当我从 bash 执行 shFile 时,所有的 shell 脚本都会被执行。但是,当我使用 subprocess.Popen 执行它时,不会执行最后一个 shell 脚本。有趣的是,shFile 的最后一行是“echo 'Done'”,它会被执行。
shFile的最后6行是:
sh /export/hierMultiStream_audSpec_direct/tempScripts/decoder__20_eval.sh
sh /export/hierMultiStream_audSpec_direct/tempScripts/decoder__5_eval.sh
sh /export/hierMultiStream_audSpec_direct/tempScripts/decoder__20_eval.sh
sh /export/hierMultiStream_audSpec_direct/tempScripts/decoder__15_eval.sh
sh /export/hierMultiStream_audSpec_direct/tempScripts/decoder__10_eval.sh
echo "Done"
只有decoder__10_eval.sh 没有被执行。如果我更改脚本的顺序,最后一个将再次无法执行。
【问题讨论】:
-
我能够确定问题所在,我在编写最后一个解码器__脚本后未能关闭文件。因此,子进程试图在脚本完全编写之前运行它。
标签: python shell subprocess