我正在寫在一個循環中執行一系列操作的Python腳本,通過使子進程調用,就像這樣:使用python子不可預知的行爲叫
os.system('./svm_learn -z p -t 2 trial-input model')
os.system('./svm_classify test-input model pred')
os.system('python read-svm-rank.py')
score = os.popen('python scorer.py -g gold-test -i out').readline()
當我打的電話分別一前一後其他在外殼中他們工作得很好。但在腳本內,它們總是破裂。我追蹤了錯誤的來源,並且似乎輸出文件在最後被截斷(導致我相信正在進行的調用沒有完成)。
我試着用subprocess.Popen,然後使用Popen對象的wait()方法,但無濟於事。腳本仍然中斷。
任何想法這裏發生了什麼?
'os.system'和'subprocess.call'都等待系統調用完成後才返回。如果您需要幫助調試您的程序,我們將需要更多信息。 'os.system('python read-svm-rank.py')'看起來對我來說是高度懷疑的,是否有可能從read-svm-rank.py中導入你需要的東西? – 2012-04-10 21:39:32
你的文件是否在任何機會的遠程文件系統(如NFS)? – amcnabb 2012-04-10 21:45:40
用戶實際上解決了他們自己的問題,並將他們的解決方案作爲對已刪除答案的評論發佈。這是由於文件未被關閉造成的,因此不會刷新到磁盤。 – agf 2012-04-11 04:38:21