最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python執(zhí)行shell腳本 并動態(tài)傳參 及subprocess的使用詳解

 更新時間:2020年03月06日 08:24:13   作者:風(fēng)中孤狐  
這篇文章主要介紹了使用python執(zhí)行shell腳本 并動態(tài)傳參 及subprocess的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

最近工作需求中 有遇到這個情況 在web端獲取配置文件內(nèi)容 及 往shell 腳本中動態(tài)傳入?yún)?shù)

執(zhí)行shell腳本這個有多種方法 最后還是選擇了subprocess這個python標(biāo)準(zhǔn)庫

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):

參數(shù)是:

args 應(yīng)該是一個字符串,或一系列程序參數(shù)。要執(zhí)行的程序通常是args序列或字符串中的第一項,但可以使用可執(zhí)行參數(shù)進行顯式設(shè)置。

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

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

可以先創(chuàng)建一個簡單的shell腳本 a.sh

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

如果不寫shell=True,默認(rèn)為shell=False,需要在args的第一個參數(shù)指定執(zhí)行器路徑

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

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

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

preexec_fn 如果將preexec_fn設(shè)置為可調(diào)用對象,則該對象將在子進程執(zhí)行前被調(diào)用。

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

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

如果cwd不是None,那么在執(zhí)行子代之前,當(dāng)前目錄將更改為cwd。

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

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

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

Popen對象的一些方法

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

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

Popen.communicate(input=None) 將信息輸入到進程,從stdout和stderr中讀取數(shù)據(jù),直到達到文件結(jié)尾。等待進程終止??蛇x的stdin參數(shù)應(yīng)該是要發(fā)送到子進程的字符串,如果沒有數(shù)據(jù)應(yīng)發(fā)送給子進程,則為None。

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

Popen.pid 返回子進程的pid

Popen.returncode 讀取進程的狀態(tài)碼

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

Popen.kill() 殺死進程

以上這篇使用python執(zhí)行shell腳本 并動態(tài)傳參 及subprocess的使用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 跟老齊學(xué)Python之從if開始語句的征程

    跟老齊學(xué)Python之從if開始語句的征程

    前面做了很多鋪墊了,真正的編程我們還沒有講過,各位童鞋也許早就不耐煩了,好吧,今天我們就從if語句來踏上我們的征程
    2014-09-09
  • python讀寫ini配置文件方法實例分析

    python讀寫ini配置文件方法實例分析

    這篇文章主要介紹了python讀寫ini配置文件方法,實例分析了Python針對ini配置文件的相關(guān)讀寫技巧,需要的朋友可以參考下
    2015-06-06
  • Python代碼實現(xiàn)http/https代理服務(wù)器的腳本

    Python代碼實現(xiàn)http/https代理服務(wù)器的腳本

    這篇文章主要介紹了Python代碼做出http/https代理服務(wù)器,啟動即可做http https透明代理使用,通過幾百行代碼做出http/https代理服務(wù)器代碼片段,需要的朋友可以參考下
    2019-08-08
  • python切換hosts文件代碼示例

    python切換hosts文件代碼示例

    開發(fā)或者測試網(wǎng)站程序時,我們很多時候都會遇到多個hosts文件來回切換,windows的hosts文件目錄比較深,麻煩,因此,用python寫了個小腳本來簡化此功能
    2013-12-12
  • Python探索之SocketServer詳解

    Python探索之SocketServer詳解

    這篇文章主要介紹了Python探索之SocketServer詳解,小編覺得還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • 一小時快速入門Python教程

    一小時快速入門Python教程

    這篇文章主要講述了幾個例子,通過簡單的demo讓有寫代碼經(jīng)驗的你能夠快速的入門Python的使用,大大提升你的學(xué)習(xí)效率
    2021-06-06
  • 在VScode里面添加Python解釋器的詳細步驟

    在VScode里面添加Python解釋器的詳細步驟

    VScode編輯器在安裝好Python插件之后會自動選擇環(huán)境變量中排序最高的那一個解釋器作為默認(rèn)解釋器,而想要額外添加新的Python解釋器就需要自己設(shè)置,接下來通過本文給大家分享VScode添加Python解釋器的方法,感興趣的朋友一起看看吧
    2023-02-02
  • 用Python實現(xiàn)石頭剪刀布游戲

    用Python實現(xiàn)石頭剪刀布游戲

    大家好,本篇文章主要講的是用Python實現(xiàn)石頭剪刀布游戲,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • python基于ID3思想的決策樹

    python基于ID3思想的決策樹

    這篇文章主要為大家詳細介紹了python基于ID3思想的決策樹,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python+opencv實現(xiàn)動態(tài)物體識別

    python+opencv實現(xiàn)動態(tài)物體識別

    這篇文章主要為大家詳細介紹了python+opencv實現(xiàn)動態(tài)物體識別,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論

宣武区| 安陆市| 太谷县| 维西| 麻城市| 正阳县| 昂仁县| 左贡县| 蓬安县| 崇州市| 平顶山市| 从化市| 鄄城县| 蕉岭县| 蓝田县| 天水市| 河东区| 独山县| 赫章县| 新干县| 孟连| 罗甸县| 扬中市| 陇西县| 东乡族自治县| 夏河县| 淮北市| 谢通门县| 奉节县| 陵水| 陕西省| 灯塔市| 姚安县| 孝义市| 柳江县| 云梦县| 南部县| 托克逊县| 山丹县| 克什克腾旗| 临夏县|