在Python中,subprocess
模塊用于執(zhí)行外部命令或程序
subprocess.run()
: 這是執(zhí)行外部命令并等待其完成的最簡單方法。它返回一個subprocess.CompletedProcess
實例,其中包含命令的返回碼、輸出、錯誤輸出等信息。import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)
參數(shù)說明:
args
: 一個字符串列表,表示要執(zhí)行的外部命令及其參數(shù)。capture_output
: 一個布爾值,表示是否捕獲命令的輸出。如果為True
,則將輸出捕獲到stdout
和stderr
屬性中。text
: 一個布爾值,表示是否將輸出轉(zhuǎn)換為字符串。如果為True
,則將輸出轉(zhuǎn)換為字符串,否則將輸出作為字節(jié)串返回。subprocess.Popen()
: 這是一個更靈活的函數(shù),允許你與外部命令進行交互。你可以使用它來執(zhí)行多個命令、讀取命令的輸出等。import subprocess
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
stdout, stderr = process.communicate()
print(stdout)
參數(shù)說明:
args
: 一個字符串列表,表示要執(zhí)行的外部命令及其參數(shù)。stdout
: 一個文件對象或subprocess.PIPE
,表示命令的標準輸出應該被寫入哪里。stderr
: 一個文件對象或subprocess.PIPE
,表示命令的標準錯誤應該被寫入哪里。text
: 一個布爾值,表示是否將輸出轉(zhuǎn)換為字符串。如果為True
,則將輸出轉(zhuǎn)換為字符串,否則將輸出作為字節(jié)串返回。stdin
: 一個文件對象或subprocess.PIPE
,表示命令的標準輸入應該被寫入哪里。bufsize
: 一個整數(shù),表示緩沖區(qū)的大小。universal_newlines
: 一個布爾值,表示是否使用通用的換行符(\n
)替換平臺特定的換行符(\r\n
或 \r
)。這些示例展示了如何使用subprocess
模塊執(zhí)行外部命令并設(shè)置相關(guān)參數(shù)。你可以根據(jù)自己的需求選擇合適的方法。