2012-02-07 34 views
1

模塊的Python是否適用於腳本命令行任務?Python是否有腳本命令行任務模塊?

我對能夠發出命令,解析輸出,特別是與成功,失敗或進展有關的事情感興趣,並根據結果發送電子郵件。

是否有一些模塊特別適用於此?

回答

1

片段使用suprocessshlex模塊:

def runcommand(command): 
    args = shlex.split(command) 
    p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
    (stdoutdata, stderrdata) = p.communicate() 
    return (stdoutdata, stderrdata, p.returncode) 

(outdata, errdata, returncode) = runcommand('/bin/ls -hl /tmp') 

outlines = outdata.splitlines() 
errlines = errdata.splitlines() 

發送郵件有圖書館文檔中良好examples

請注意,communicate()將等待進程終止。對於進度只需訪問Popen pid and streams直接結合poll()wait()

2

子過程很好,在標準庫中。還有其他外部模塊可以與命令行任務進行交互。

  • pbs在大多數創新性API中處於第一位。
  • shellout緊隨其後。
+0

pbs看起來很整齊。非常Pythonic! – dkamins 2012-02-07 03:40:56

1

這看起來像它可能做你想要什麼:https://github.com/amoffat/pbs

GitHub的頁面上的文檔中有一些很好的例子。此外,我還沒有使用過這個,但已經從網上其他人讀到他們真的很喜歡這一點,並認爲這優於子進程(無論什麼原因)

乾杯。