国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

使用python執行shell腳本 并動態傳參 及subprocess的使用詳解

瀏覽:4日期:2022-08-03 16:53:46

最近工作需求中 有遇到這個情況 在web端獲取配置文件內容 及 往shell 腳本中動態傳入參數

執行shell腳本這個有多種方法 最后還是選擇了subprocess這個python標準庫

subprocess這個模塊可以非常方便的啟動一個子進程,并且控制其輸入和輸出

Class 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 應該是一個字符串,或一系列程序參數。要執行的程序通常是args序列或字符串中的第一項,但可以使用可執行參數進行顯式設置。

在UNIX上,與shell=False(默認):在這種情況下,POPEN 類使用os.execvp()來執行子程序。 args通常應該是一個序列。一個字符串將被視為一個字符串作為唯一項目(要執行的程序)的序列。

在UNIX上,使用shell = True:如果args是一個字符串,則它指定要通過shell執行的命令字符串。如果args是一個序列,則第一個項目指定命令字符串,并且任何其他項目將被視為附加的shell參數。

可以先創建一個簡單的shell腳本 a.sh

$1 $2 分別代表傳進腳本的 第一個和第二個參數

使用python執行shell腳本 并動態傳參 及subprocess的使用詳解

使用python執行shell腳本 并動態傳參 及subprocess的使用詳解

如果不寫shell=True,默認為shell=False,需要在args的第一個參數指定執行器路徑

使用python執行shell腳本 并動態傳參 及subprocess的使用詳解

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

stdin,stdout和stderr分別指定執行的程序的標準輸入,標準輸出和標準錯誤文件句柄。有效值是PIPE,現有文件描述符(正整數),現有文件對象和 None。 PIPE表示應該創建一個新的管道給孩子。隨著無,則不會發生重定向; 孩子的文件句柄將從父類繼承。另外,stderr 可以是STDOUT,它表示應用程序的stderr數據應該被捕獲到與stdout相同的文件句柄中。

在Popen對象中,可以設值subprocess.stdout=PIPE 即通過管道 p.stdout.read()取出 該進程的標準輸出

preexec_fn 如果將preexec_fn設置為可調用對象,則該對象將在子進程執行前被調用。

如果close_fds為true,則在執行子進程之前,將關閉除0,1和2之外的所有文件描述符。

如果shell為true,則指定的命令將通過shell執行。

如果cwd不是None,那么在執行子代之前,當前目錄將更改為cwd。

如果env不是None,它將為新進程定義環境變量。

如果設置universal_newlines為true,則文件對象stdout和stderr將作為文本文件打開,但可能會有 n,Unix行尾約定 r,Macintosh約定或 r n中的任何行終止, Windows約定。所有這些外部表示被Python程序視為 n。注意:此功能僅在Python是使用通用換行支持(默認)構建時才可用。此外,文件對象stdout,stdin和stderr的newlines屬性不會被communications()方法更新。

如果設置了STARTUPINFO和creationflags,將被傳遞到下層的CreateProcess()函數。他們可以指定諸如主窗口的外觀和新過程的優先級等內容。(僅限Windows)

Popen對象的一些方法

Popen.poll() 檢查子進程是否終止,返回對象的returncode

Popen.wait() 等待子進程完成,阻塞。返回returncode

Popen.communicate(input=None) 將信息輸入到進程,從stdout和stderr中讀取數據,直到達到文件結尾。等待進程終止。可選的stdin參數應該是要發送到子進程的字符串,如果沒有數據應發送給子進程,則為None。

返回一個元組(stdout,stderr) 但是讀取的數據緩存在內存中,所以如果數據量很大或者無限,就不要使用這種方法

Popen.pid 返回子進程的pid

Popen.returncode 讀取進程的狀態碼

None —— 子進程尚未結束;==0 —— 子進程正常退出;> 0—— 子進程異常退出,returncode對應于出錯碼;< 0—— 子進程被信號殺掉了。

Popen.kill() 殺死進程

以上這篇使用python執行shell腳本 并動態傳參 及subprocess的使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产成人精品免费视频网页大全 | 久草视频国产 | 成人在线免费观看 | 很黄很暴力深夜爽爽无遮挡 | 毛片手机在线视频免费观看 | 狠狠一区| 亚洲综合中文 | 欧美日韩一区二区三区免费 | 第一色网站 | 97久久曰曰久久久 | 美国一级特a黄 | 91青青国产在线观看免费 | 久久精品国产精品亚洲毛片 | 成人国产精品毛片 | 亚洲狠狠狠一区二区三区 | 国产99视频在线 | 一区二区影视 | 日本波多野结衣在线 | 日韩中文字幕视频 | 国产男女乱淫真视频全程播放 | 国产精品久久久久久久午夜片 | 成人午夜兔费观看网站 | 亚洲男人天堂久久 | 全部在线美女网站免费观看 | 黄 色 成 年人网站 黄 色 免费网 站 成 人 | 国产欧美一区二区精品性色 | 国产自产v一区二区三区c | 亚洲综合91社区精品福利 | 在线视频精品一区 | 色综合久久88色综合天天小说 | 亚洲国产精品激情在线观看 | 中文字幕一区二区三区视频在线 | 2019国产精品 | 中国美女一级看片 | 久久免费精品视频在线观看 | 美女流白浆网站 | 亚洲综色 | 亚洲免费成人 | 免费播放国产性色生活片 | 特黄aa级毛片免费视频播放 | 538在线视频二三区视视频 |