搜尋
首頁後端開發Python教學python中subprocess類別與常數的詳細介紹
python中subprocess類別與常數的詳細介紹Mar 29, 2019 am 10:57 AM
pythonshellsubprocess

這篇文章帶給大家的內容是關於python中subprocess類與常數的詳細介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

常數

subprocess.DEVNULL:可傳遞給stdin, stdout, stderr參數的特殊值,意味著將使用特殊檔案os.devnull重定向輸入輸出

subprocess .PIPE:可傳遞給stdin, stdout, stderr參數的特殊值,意味著使用管道重定向輸入輸出

subprocess.STDOUT:可傳遞給stderr參數的特殊值,表示重定向標準錯誤到標準輸出

Popen

在一個新的行程中執行子程式。

建構參數

(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell =False, cwd=None, env=None, universal_newlines=None, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=(), *, encoding=None.

args:字串或序列。如果是序列,則args中的第一個元素是要執行的程式;如果是字串,解釋執行與平台有關,在POSIX系統args將被解釋為要執行的程式的名稱或路徑(前提是不傳遞任何參數給程序)。

shell:指定是否使用shell作為要執行的程式。如果設定為True,則更推薦和字串類型的args參數使用。
在POSIX系統,shell=True預設使用/bin/sh作為shell。如果args為字串,則字串表示要透過shell執行的命令;如果args為序列,第一個元素指定要執行的程序,則其他元素視為參數。
在Windows系統,shell=True預設使用COMSPEC環境變數指定的shell,一般是C:\WINDOWS\system32\cmd.exe。唯一需要指定shell=True的場景是要執行的指令是shell內建的,如dir, copy

bufsize:建立stdin/stdout/stderr管道檔案物件時作為對應的參數傳遞給open()函數。
0:不始用緩衝
1:使用行緩衝
其他正整數:緩衝大小
負整數(預設):使用系統預設值

executable: 使用shell=True的場景很少。 shell=True時,在POSIX系統上此參數表示指定一個新的shell程式取代預設shell/bin/sh

stdin/stdout/stderr:分別指定程式執行的標準輸入,標準輸出,標準錯誤。可選值包括PIPEDEVNULL,已存在的檔案描述符(正整數),已存在的檔案對象,None。子進程檔案句柄繼承自父進程。除此之外,stderr還可以是STDOUT,表示標準錯誤輸出重定向到標準輸出。

preexec_fn:限於POSIX系統,設定一個可呼叫對象,先於子程序中的程式執行。

close_fds:如果為False,檔案描述子遵循Inheritance of File Descriptors中所述的inheritable識別。
如果為True,在POSIX系統下,在子程序執行前關閉除0,1,2外的檔案描述子。

pass_fds:限於POSIX,可選的檔案描述子序列,用於在父子進程間保持開放。只要提供了此參數,close_fds強制設為True。

cwd:在子程序執行前改變工作目錄為cwd,可以是字串或path-like物件。

restore_signals:限於POSIX,略

start_new_session:限於POSIX,略

env:​​ dict對象,為新進程定義環境變量,取代繼承自父進程的變數。在Windows下,要執行side-by-side assembly必須包含可用的環境變數SystemRoot如果指定了env,就必須提供程式執行依賴的所有環境變數

encoding/errors/text/universal_newlines:stdin/stdout/stderr預設以二進位模式打開。但如果指定了encoding/errors或text為True,將使用指定的encoding和errors以文字模式開啟stdin/stdout/stderr。 universal_newlines參數等同於text,用於後向相容。

startupinfo:只限於Windows,略

creationflags:只限於Windows,略

方法

#poll():檢查子程序是否終止。傳回None表示未終止,否則設定returncode屬性並回傳。

wait(timeout=None):如果子程序在timeout後沒有終止,拋出TimeoutExpired異常。否則設定returncode屬性並回傳。

communicate(input=None, timeout=None):進程互動:傳送資料到stdin,讀取stdout或stderr的資料知道讀取到結束符號。傳回(stdout_data, stderr_data)形式的元組,元組類型是string或byte。
input為None或要傳送到子程序的數據,根據stream開啟模式的不同,可以是string或byte類型。
如果要和進程的stdin交互,創建Popen物件時需要指定stdin=PIPE。類似的,返回的tuple如果希望是非None,則需要設定stdout=PIPE和/或stderr=PIPE。
如果子程序在timeout後沒有終止,拋出TimeoutExpired異常,但子程序並未kill掉,一個好的應用應該kill掉子程序並結束交互:

proc = subprocess.Popen(...)
try:
    outs, errs = proc.communicate(timeout=15)
except TimeoutExpired:
    proc.kill()
    outs, errs = proc.communicate()

send_signal( signal):傳送訊號到子程序

terminate():終止子程序。 POSIX系統上,發送SIGTERM訊號到子程序,Windows系統上會呼叫TerminateProcess()終止程序

kill():強制終止子程序。 POSIX系統上,傳送SIGKILL訊號到子進程。 Windows系統上kill()是terminate()的別名

屬性

#args:傳入Popen建構器的第一個參數, list或string類型

stdin:如果傳遞給Popen的stdin參數是PIPE,該屬性表示string或byte類型的可寫stream物件。如果傳遞給Popen的stdin參數不是PIPE,此屬性值為None

stdout:與Popen.stdin相近,但stream物件是可讀的

#stderr:與Popen.stdout相近

pid:子進程進程號。如果設定了shell=True,pid表示派生shell的進程號

returncode:子程序回傳碼,None表示進程未終止。負數-N表示進程被訊號N終止(僅限POSIX)。

CompletedProcess

run()函數執行的回傳值,表示程式執行完成。

屬性

args:傳入run()函數的第一個參數,list或string類型

returncode:子程序退出碼。如果為負數,表示進程因為某個訊號退出

stdout:捕獲的子程序的標準輸出,預設為byte類型,如果run()函數調用時指定了encoding或errors,或設定了text=True則為string類型。如果未捕獲標準輸出返回None

stderr:捕獲的子程序的標準錯誤,則預設為byte類型,如果run()函數呼叫時指定了encoding或errors,或設定了text=True則為string類型。如果未擷取標準錯誤回傳None

方法

check_returncode():如果returncode非0,拋出CalledProcessError

異常

subprocess.SubprocessError

subprocess模組的例外基底類別

subprocess.TimeoutExpired

#子程式執行逾時。
屬性

cmd:

指令

#timeout:

秒為單位的時間

output:run()check_output()

函數捕獲到的子程序的輸出,否則為None

stdout:

output屬性別名稱

stderr:run()

函數捕獲到的子程序的錯誤輸出,否則為None

subprocess.CalledProcessError

check_call()check_output()

函數傳回非0狀態碼時拋出。
屬性

returncode:

子程序退出碼。若為負數,表示行程因為某個訊號退出

cmd:

同TimeoutExpired

output:

同TimeoutExpired

#stdout:

同TimeoutExpired

stderr:

同TimeoutExpired

本篇文章到這裡就已經全部結束了,更多其他精彩內容可以追蹤PHP中文網的python影片教學

欄位!


###

以上是python中subprocess類別與常數的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:segmentfault。如有侵權,請聯絡admin@php.cn刪除
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。