コードのすべての行は実行されません:subprocess.Popenは、シェルスクリプト
proc=subprocess.Popen(['sh',shFile],stderr=subprocess.PIPE,stdout=subprocess.PIPE)
out,err = proc.communicate()
問題:ライン1に
shFileには、いくつかのシェルスクリプトを実行します。 bashからshFileを実行すると、すべてのシェルスクリプトが実行されます。しかし、私がsubprocess.Popenを使って実行すると、最後のシェルスクリプトは実行されません。興味深いことに、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は実行されません。スクリプトの順序を変更すると、最後のスクリプトが実行されなくなります。
問題を特定できましたが、最後のdecoder__スクリプトを記述した後でファイルを閉じることができませんでした。したがって、サブプロセスは完全に記述される前にスクリプトを実行しようとしていました。 – Vijay