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

python執(zhí)行l(wèi)inux系統(tǒng)命令的三種方式小結(jié)

 更新時(shí)間:2024年02月02日 10:04:16   作者:神的孩子都在歌唱  
本文介紹三種在python執(zhí)行l(wèi)inux命令的方式,三種方式都是基于python的標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn),因此不需要額外安裝第三方庫(kù),具有一定的參考價(jià)值,感興趣的可以了解一下

前言

這是我在這個(gè)網(wǎng)站整理的筆記,有錯(cuò)誤的地方請(qǐng)指出

1. 使用os.system

 os.system(cmd),其中cmd就是需要執(zhí)行的linux命令。該方式會(huì)阻塞主進(jìn)程,直到命令執(zhí)行結(jié)束并返回狀態(tài),如果返回的狀態(tài)值為0,表示命令正常執(zhí)行,如果不為0,則表示命令執(zhí)行異常。要注意的是,該方式執(zhí)行l(wèi)inux命令,會(huì)直接打印出命令執(zhí)行的結(jié)果,但是不會(huì)作為對(duì)象返回,因此程序無(wú)法直接獲取命令執(zhí)行的結(jié)果。

無(wú)法獲取命令執(zhí)行后的返回信息

import os

os.system('ls')

image-20240131221444134

2. 使用os.popen

os.popen(cmd)方式,不會(huì)阻塞主進(jìn)程,執(zhí)行命令的子進(jìn)程會(huì)和主進(jìn)程同步運(yùn)行,如果想要進(jìn)行阻塞,等到命令執(zhí)行完再執(zhí)行下一步,可以通過(guò)os.wait()函數(shù)等到子進(jìn)程執(zhí)行完畢。

os.popen()會(huì)返回一個(gè)對(duì)象,該對(duì)象可文件對(duì)象類似,支持文件對(duì)象的讀寫(xiě)接口,該對(duì)象會(huì)保存命令執(zhí)行的結(jié)果,可以通過(guò)對(duì)象的read()函數(shù)獲取結(jié)果內(nèi)容。因此,該方式相比于os.system()的特點(diǎn)是,不阻塞子進(jìn)程,可以直接獲取命令執(zhí)行的結(jié)構(gòu)。

能夠獲取命令執(zhí)行后的返回信息

import os

data=os.popen('ls').readlines()
print(data)

image-20240131221624726

3. 使用模塊 subprocess

subprocess.Popen(args,shell=True,stdout=f),其中args可以為字符串,也可以為一個(gè)列表,如果是字符串,那么會(huì)將其認(rèn)為是可執(zhí)行程序直接運(yùn)行,如果是一個(gè)列表,則會(huì)將其當(dāng)做是空格隔開(kāi)的shell命令,此時(shí)需要將shell參數(shù)設(shè)為T(mén)rue,才行。例如subprocess.Popen(['ps','-ef'],shell=True),會(huì)顯示所有的進(jìn)程。這里需要注意的是,這里默認(rèn)環(huán)境是當(dāng)前主進(jìn)程,因此只會(huì)顯示當(dāng)前主進(jìn)程下所有的進(jìn)程信息,而不是整個(gè)系統(tǒng)的進(jìn)程信息。subprocess.Popen()返回的對(duì)象具有多個(gè)方法,默認(rèn)該方式對(duì)于命令執(zhí)行是非阻塞的,但是可以通過(guò)p.wait()進(jìn)行阻塞,其中p表示返回的對(duì)象,還可以通過(guò)pid屬性獲取進(jìn)程號(hào),kill()方法直接結(jié)束進(jìn)程等。

此外,對(duì)于命令的執(zhí)行結(jié)果,默認(rèn)是直接打印出來(lái),還可以通過(guò)stdout參數(shù)重定向到文件中,比如設(shè)置stdout參數(shù)為一個(gè)文件對(duì)象,就可以將結(jié)果輸出到文件中。如果該文件同時(shí)支持讀取模式,那么還可以先將文件指針seek到指定位置再讀取命令執(zhí)行后的輸出結(jié)果。(因?yàn)閷?xiě)入輸出結(jié)果后,文件指針在文件最后,因此直接讀取是無(wú)法讀到內(nèi)容的,所以需要先seek到指定位置,比如0位置,才能讀?。?/p>

通過(guò)subprocess模塊可以更靈活地執(zhí)行命令,并獲取執(zhí)行后的返回信息。

import subprocess

# 使用Popen執(zhí)行命令,并捕獲標(biāo)準(zhǔn)輸出
result = subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

# 讀取并解碼標(biāo)準(zhǔn)輸出
output_bytes = result.stdout.read()
output_str = output_bytes.decode('utf-8')

# 輸出結(jié)果
print(output_str)

# 或者逐行輸出結(jié)果
for line in output_str.splitlines():
    print(line)

image-20240131222135088

參數(shù)解釋:

  • shell=True:指示在shell中運(yùn)行命令。
  • stdout=subprocess.PIPE:捕獲命令的標(biāo)準(zhǔn)輸出。
  • stderr=subprocess.STDOUT:將標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出。

通過(guò)使用subprocess模塊,可以更方便地處理命令執(zhí)行的輸出,并在需要時(shí)對(duì)其進(jìn)行進(jìn)一步處理。

到此這篇關(guān)于python執(zhí)行l(wèi)inux系統(tǒng)命令的三種方式小結(jié)的文章就介紹到這了,更多相關(guān)python執(zhí)行l(wèi)inux系統(tǒng)命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python簡(jiǎn)單實(shí)例訓(xùn)練(21~30)

    python簡(jiǎn)單實(shí)例訓(xùn)練(21~30)

    上篇文章給大家介紹了python簡(jiǎn)單實(shí)例訓(xùn)練的1-10,這里繼續(xù)為大家介紹python的一些用法,希望大家每個(gè)例子都打出來(lái)測(cè)試一下
    2017-11-11
  • NoSql數(shù)據(jù)庫(kù)介紹及使用Python連接MongoDB

    NoSql數(shù)據(jù)庫(kù)介紹及使用Python連接MongoDB

    MongoDB是一個(gè)非常流行的NoSQL數(shù)據(jù)庫(kù),常用于大規(guī)模數(shù)據(jù)存儲(chǔ)應(yīng)用,下面這篇文章主要給大家介紹了關(guān)于NoSql數(shù)據(jù)庫(kù)及使用Python連接MongoDB的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 淺談opencv自動(dòng)光學(xué)檢測(cè)、目標(biāo)分割和檢測(cè)(連通區(qū)域和findContours)

    淺談opencv自動(dòng)光學(xué)檢測(cè)、目標(biāo)分割和檢測(cè)(連通區(qū)域和findContours)

    這篇文章主要介紹了淺談opencv自動(dòng)光學(xué)檢測(cè)、目標(biāo)分割和檢測(cè)(連通區(qū)域和findContours),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python lambda函數(shù)基本用法實(shí)例分析

    Python lambda函數(shù)基本用法實(shí)例分析

    這篇文章主要介紹了Python lambda函數(shù)基本用法,結(jié)合實(shí)例較為詳細(xì)的分析了Python lambda函數(shù)的功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • 跟老齊學(xué)Python之玩轉(zhuǎn)字符串(2)

    跟老齊學(xué)Python之玩轉(zhuǎn)字符串(2)

    上一篇文章章中已經(jīng)講到連接兩個(gè)字符串的一種方法,本文繼續(xù)講訴連接字符串的方法2,字符串復(fù)制,字符串長(zhǎng)度,字符大小寫(xiě)的轉(zhuǎn)換,希望對(duì)大家有所幫助。
    2014-09-09
  • 最新評(píng)論

    且末县| 景泰县| 徐州市| 西昌市| 苍南县| 从江县| 方正县| 荆门市| 兰西县| 盖州市| 晋江市| 安平县| 津南区| 洛阳市| 靖江市| 闵行区| 广宗县| 进贤县| 昌吉市| 嘉善县| 廉江市| 山阴县| 南川市| 西藏| 贡嘎县| 嘉鱼县| 乐都县| 措勤县| 青岛市| 景泰县| 稷山县| 鱼台县| 保靖县| 仪陇县| 抚宁县| 北辰区| 鹤岗市| 溧阳市| 鹿泉市| 正镶白旗| 周宁县|