subprocess模組詳解

2022-02-06 08:27:41 字數 3379 閱讀 4974

subprocess是python與系統互動的乙個庫,該模組允許生成新程序,連線到它們的輸入/輸出/錯誤管道,並獲取它們的返回**。

該模組旨在替換幾個較舊的模組和功能:

os.system

os.spawn

os.popen

popen2

commands

相關函式

subprocess.call(args,*,stdin = none,stdout = none,stderr = none,shell =false )

執行args描述的命令。等待命令完成,然後返回returncode屬性

subprocess.check_call(args,*,stdin = none,stdout = none,stderr = none,shell =false )

使用引數執行命令並將其輸出作為位元組字串返回。如果返回碼非零,則會引發 calledprocesserror

subprocess.check_output(args,*,stdin = none,stderr = none,shell = false,universal_newlines = false 

使用引數執行命令並將其輸出作為位元組字串返回。如果返回碼非零,則會引發 calledprocesserror

subprocess.pipe

可用作stdin,stdout或stderr引數的特殊值,popen表示應開啟標準流的管道

subprocess.stdout

可用作stderr引數的特殊值,popen表示標準錯誤應與標準輸出位於同一控制代碼中。

subprocess.stdout

可用作stderr引數的特殊值,popen表示標準錯誤應與標準輸出位於同一控制代碼中。

引數介紹

args: 要執行的shell命令程式

stdin:執行程式的標準輸入,預設值為none

stdout:執行程式的標準輸出,預設值為none

stderr:執行程式標準錯誤檔案控制代碼,預設值為none

shell:如果該引數值為true,則將通過shell執行指定的命令

universal_newlines:如果該引數值為true,則該檔案物件的stdin,stdout和stderr將會作為文字流被開啟,否則他們將會被作為二進位製流被開啟

subprocess.popen

subprocess模組中的基礎流程建立和管理都是由 popen 

類處理。popen 用於在乙個新的程序中執行乙個子程式

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 )

引數介紹

args:是一系列程式引數或者是乙個單獨的字串

bufsize:如果給定,與內建open()函式的相應引數具有相同的含義:0表示無緩衝,1表示行緩衝,任何其他正值表示使用(大約)該大小的緩衝區。負值表示使用系統預設值,這通常意味著完全緩衝。bufsize的預設值是0(unbuffered)

stdin,stdout,stderr:分別指定執行程式的標準輸入,標準輸出和標準錯誤檔案控制代碼

preexec_fn:如果設定為可呼叫物件,則在執行子程序之前,將在子程序中呼叫此物件(僅限unix)

close_fds:如果為true,所有的檔案描述符除外0,1並 2執行子程序之前,將被關閉(僅限unix)

cwd:如果不是none,則子程序的當前目錄在執行之前將更改為cwd的值

env:如果不是none,則它必須是定義新程序的環境變數的對映,如果env=none,那麼子程序的環境變數將從父程序中繼承

universal_newlines: 如果該引數值為true,則該檔案物件的stdin,stdout和stderr將會作為文字流被開啟,否則他們將會被作為二進位製流被開啟

startupinfo:如果給定,將是乙個startupinfo物件,它將傳遞給底層createprocess函式(僅限windows)

creationflags:如果給出,可以是create_new_console或 create_new_process_group(僅限windows)

popen類的方法

popen.poll()

檢查子程序是否已終止。設定並返回 returncode屬性。

popen.wait()

等待子程序終止。設定並返回 returncode屬性。

popen.communicate(input=none)

與程序互動:將資料傳送到stdin。從stdout和stderr讀取資料,直到達到檔案結尾。返回乙個元組

(stdoutdata, stderrdata)

popen.send_signal(signal)

將訊號訊號傳送給子程序。

popen.terminate()

停止子程序

popen.kill()

殺了子程序

popen類的屬性

popen.stdin

如果stdin的引數是subprocess.pipe,則此屬性是乙個檔案物件,它為子程序提供輸入。否則就是none。

popen.stdout

如果stdout的引數是subprocess.pipe,則此屬性是乙個檔案物件,它提供子程序的輸出。否則就是none。

popen.stderr

如果stderr的引數是subprocess.pipe,則此屬性是乙個檔案物件,它提供子程序的錯誤輸出。否則就是none。

popen.pid

子程序的程序id。

popen.returncode

子程序的返回碼,通過設定poll()和wait()(或間接的communicate())。乙個none值表示程序尚未結束。負值-n表示該子程序被訊號終止 (僅限unix)。

struct 模組 subprocess 模組

struct 模組 就這麼用 import struct 首先匯入此模組 res ncjewgfjsdbvdhj 隨意的值 print len res 15 只是為了展示原res的長度res1 struct.pack i len res 打包,固定i模式,len res print len res1...

subprocess模組 re模組

import subprocess 匯入subprocess模組,該模組的作用為可以通過python 向終端 cmd 傳送命令 while true 進行迴圈,可以讓使用者重複的進行輸入 cmd str input 請輸入終端命令 strip 定義變數cmd str obj subprocess.p...

Python re模組 subprocess模組

re模組 內部實現不是python 而是呼叫了c的庫 re是什麼 正則 表達 式子 就是一些帶有特殊含義的符號或者符號的組合 作用 對字串進行過濾 在一對字串中找到所關心的內容 你就需要告訴計算機過濾規則是什麼樣 通過什麼方式來告訴計算機 就通過正規表示式 re模組常用方法 findall 從左往右...