終止我有一些代碼在後臺在python確定過程已成功
import subprocess
process = subprocess.Popen('find/> tmp.txt &',shell=True)
我需要捕捉的場景,我都知道,過程完成成功完成 執行UNIX shell命令。
請示例代碼解釋
Tazim
終止我有一些代碼在後臺在python確定過程已成功
import subprocess
process = subprocess.Popen('find/> tmp.txt &',shell=True)
我需要捕捉的場景,我都知道,過程完成成功完成 執行UNIX shell命令。
請示例代碼解釋
Tazim
請勿使用shell = True。這對你的健康有害。
proc = subprocess.Popen(['find', '/'], stdout=open('tmp.txt', 'w'))
if proc.wait() == 0:
pass
如果你真的需要一個文件,使用import tempfile
而不是硬編碼的臨時文件名。如果您不需要該文件,請使用管道(請參閱托馬斯建議的子流程文檔)。
另外,不要在Python中編寫shell腳本。改用os.walk
函數。
沒有必要爲&
:該命令是在一個單獨的進程中啓動,而獨立運行。
如果要等到進程終止,使用wait()
:
process = subprocess.Popen('find/> tmp.txt', shell = True)
exitcode = process.wait()
if exitcode == 0:
# successful completion
else:
# error happened
如果你的程序可以做一些事情在此期間有意義,您可以使用poll()
來確定過程已經完成。
此外,不是將輸出寫入臨時文件,然後從Python程序中讀取,您可以直接從管道中讀取數據。詳細信息請參見subprocess
documentation。
只需再次注意'shell = True'也是不必要的,因爲您傳遞的命令是一個字符串,並且必須生成一個shell來評估它。 – 2010-06-21 14:09:48