Python 子程序

子程序 subprocess 模組使你可以從 Python 程式啟動新的應用程式。這是多麼酷啊?

在 Python 中啟動一個程序:

你可以使用 Popen 函式呼叫在 Python 中啟動一個程序。下面的程式啟動 unix 程式 cat,第二個引數是要啟動的程序的引數。這相當於 cat test.py。你可以使用任何引數啟動任何程式。

#!/usr/bin/env python 
 
from subprocess import Popen, PIPE
 
process = Popen(['cat', 'test.py'], stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()
print stdout

process.communicate() 呼叫讀取程序的輸入和輸出。stdout 是程序輸出。只有在發生錯誤時才會寫入 stderr。如果你想等待程式完成,可以呼叫 Popen.wait()

subprocess.call()

Subprocess 有一個方法 call(),可用於啟動程式。該引數是第一個引數必須是程式名稱的列表。完整的定義是:

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)# Wait for command to complete, then return the returncode attribute.

在下面的示例中,完整命令將是 ls -l

#!/usr/bin/env python 
 
import subprocess
subprocess.call(["ls", "-l"])

儲存程序輸出(stdout)

我們可以使用 check\_output 直接獲取程式的輸出並將其儲存在字串中。該方法定義為:

 subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)
 # Run command with arguments and return its output as a byte string.

用法示例:

#!/usr/bin/env python 
import subprocess
 
s = subprocess.check_output(["echo", "Hello World!"])
print("s = " + s)