Python 2.x 中如何使用subprocess模組進行子程序管理
概述:
在Python開發中,有時我們需要在程式中呼叫其他的外部命令或程式。 subprocess模組是Python提供的一個標準函式庫,它能夠方便地建立子程序並與其進行通訊。本文將介紹如何使用subprocess模組進行子進程管理,並透過程式碼範例進行說明。
subprocess.Popen()
,它能夠啟動一個新進程並傳回一個Popen物件。使用Popen()
函數建立子程序的基本語法如下:import subprocess subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
參數說明:
#範例程式碼1:啟動一個子程序並執行指令,然後取得子程序的輸出結果。
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) output, _ = p.communicate() print(output)
Popen()
函數的stdin、stdout、stderr參數來指定子程序的輸入輸出。如果不指定這些參數,預設會建立一個新的管道並透過Popen物件的屬性來讀寫。 範例程式碼2:啟動一個子程序並透過管道進行輸入、輸出。
import subprocess cmd = "grep -E 'a|b|c'" p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) input_data = "abcdefg hijklmnop qrstuvwxyz " output, _ = p.communicate(input_data) print(output)
範例程式碼3:啟動一個子程序並重定向輸出到檔案中。
import subprocess cmd = "grep -E 'a|b|c' input.txt > output.txt" subprocess.Popen(cmd, shell=True)
Popen()
函數會立即傳回一個Popen對象,而不會等待子進程執行完畢。如果我們需要等待子程序執行完畢後再進行下一步操作,可以使用Popen()
物件的wait()
方法。 範例程式碼4:啟動一個子程序並等待其執行完畢。
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True) p.wait() print("子进程执行完毕")
Popen()
物件的returncode
屬性來取得子程序的退出狀態碼,如果為0代表執行成功。 範例程式碼5:取得子進程的退出狀態碼。
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True) p.wait() if p.returncode == 0: print("子进程执行成功") else: print("子进程执行失败")
總結:
透過subprocess模組,我們可以方便地在Python程式中建立子進程並進行進程管理。具體的操作方法包括建立子進程、控制子進程的輸入輸出、等待子進程結束以及捕獲子進程的退出狀態碼。掌握這些知識,能夠更好地利用Python進行子進程管理,提升程式的彈性與擴展性。
以上就是Python 2.x中使用subprocess模組進行子程序管理的相關內容。希望對您有幫助。
以上是Python 2.x 中如何使用subprocess模組進行子進程管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!