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

在Python中執(zhí)行系統(tǒng)命令的方法示例詳解

 更新時(shí)間:2017年09月14日 11:56:24   作者:xl365t  
最近在做那個(gè)測(cè)試框架的時(shí)候發(fā)現(xiàn)對(duì)python執(zhí)行系統(tǒng)命令不太熟悉,所以想著總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于在Python中執(zhí)行系統(tǒng)命令的方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。

前言

Python經(jīng)常被稱作“膠水語(yǔ)言”,因?yàn)樗軌蜉p易地操作其他程序,輕易地包裝使用其他語(yǔ)言編寫的庫(kù)。在Python/wxPython環(huán)境下,執(zhí)行外部命令或者說(shuō)在Python程序中啟動(dòng)另一個(gè)程序的方法。

本文將詳細(xì)介紹關(guān)于Python中如何執(zhí)行系統(tǒng)命令的相關(guān)資料,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

(1) os.system()

這個(gè)方法直接調(diào)用標(biāo)準(zhǔn)C的system()函數(shù),僅僅在一個(gè)子終端運(yùn)行系統(tǒng)命令,而不能獲取執(zhí)行返回的信息。

>>> import os 
>>> output = os.system('cat /proc/cpuinfo') 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>> output # doesn't capture output 
0 

(2) os.popen()

這個(gè)方法執(zhí)行命令并返回執(zhí)行后的信息對(duì)象,是通過(guò)一個(gè)管道文件將結(jié)果返回。

>>> output = os.popen('cat /proc/cpuinfo') 
>>> output 
<open file 'cat /proc/cpuinfo', mode 'r' at 0x7ff52d831540> 
>>> print output.read() 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>><span style="font-size:14px;"> 

(3) commands模塊

>>> import commands 
>>> (status, output) = commands.getstatusoutput('cat /proc/cpuinfo') 
>>> print output 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>> print status 
0

注意1:在類unix的系統(tǒng)下使用此方法返回的返回值(status)與腳本或命令執(zhí)行之后的返回值不等,這是因?yàn)檎{(diào)用了os.wait()的緣故,具體原因就得去了解下系統(tǒng)wait()的實(shí)現(xiàn)了。需要正確的返回值(status),只需要對(duì)返回值進(jìn)行右移8位操作就可以了。

注意2:當(dāng)執(zhí)行命令的參數(shù)或者返回中包含了中文文字,那么建議使用subprocess。

(4) subprocess模塊

該模塊是一個(gè)功能強(qiáng)大的子進(jìn)程管理模塊,是替換os.system, os.spawn*等方法的一個(gè)模塊。

>>> import subprocess 
>>> subprocess.Popen(["ls", "-l"]) <strong> # python2.x</strong> doesn't capture output 
>>> subprocess.run(["ls", "-l"]) <strong># python3.x</strong> doesn't capture output 
<subprocess.Popen object at 0x7ff52d7ee490> 
>>> total 68 
drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com 
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop 
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents 
drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads 
... ... 
>>>

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

補(bǔ)充:

最近在做那個(gè)測(cè)試框架的時(shí)候發(fā)現(xiàn) Python 的另一個(gè)獲得系統(tǒng)執(zhí)行命令的返回值和輸出的類。

最開(kāi)始的時(shí)候用 Python 學(xué)會(huì)了 os.system() 這個(gè)方法是很多比如 C,Perl 相似的。

os.system('cat /proc/cpuinfo')

但是這樣是無(wú)法獲得到輸出和返回值的,繼續(xù) Google,之后學(xué)會(huì)了 os.popen()。

output = os.popen('cat /proc/cpuinfo')
print output.read()

通過(guò) os.popen() 返回的是 file read 的對(duì)象,對(duì)其進(jìn)行讀取 read() 的操作可以看到執(zhí)行的輸出。但是怎么讀取程序執(zhí)行的返回值呢,當(dāng)然咯繼續(xù)請(qǐng)教偉大的 Google(聯(lián)想到像我這樣的人工作如果離開(kāi)了 Google,不是成了廢物。。。Baidu 忽視)。Google 給我指向了 commands — Utilities for running commands。
這樣通過(guò) commands.getstatusoutput() 一個(gè)方法就可以獲得到返回值和輸出,非常好用。

(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
print status, output

Python Document 中給的一個(gè)例子,很清楚的給出了各方法的返回。

>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'

相關(guān)文章

  • python中類的輸出或類的實(shí)例輸出為<__main__類名 object at xxxx>這種形式的原因

    python中類的輸出或類的實(shí)例輸出為<__main__類名 object at xxxx>這種形式的原因

    在本篇文章里小編給大家分享了關(guān)于python中類的輸出或類的實(shí)例輸出為何是<__main__類名 object at xxxx>這種形式,需要的朋友們可以參考下。
    2019-08-08
  • 解決Vscode中jupyter出現(xiàn)kernel dead問(wèn)題

    解決Vscode中jupyter出現(xiàn)kernel dead問(wèn)題

    遇到VSCode中Jupyter Kernel Dead時(shí),可通過(guò)Anaconda Prompt安裝ipykernel解決,首先使用jupyter kernelspec list命令查看內(nèi)核,若發(fā)現(xiàn)缺少ipykernel,激活相應(yīng)虛擬環(huán)境,使用conda install ipykernel命令安裝,操作后,VSCode中Jupyter應(yīng)能正常運(yùn)行
    2024-09-09
  • Python getattr()函數(shù)使用方法代碼實(shí)例

    Python getattr()函數(shù)使用方法代碼實(shí)例

    這篇文章主要介紹了Python getattr()函數(shù)使用方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 非常詳細(xì)的Django連接mysql數(shù)據(jù)庫(kù)步驟記錄

    非常詳細(xì)的Django連接mysql數(shù)據(jù)庫(kù)步驟記錄

    我的Mysql中已經(jīng)有了項(xiàng)目需要使用的相關(guān)數(shù)據(jù)庫(kù),現(xiàn)在需要通過(guò)django來(lái)獲取Mysql里的數(shù)據(jù)并使用,下面這篇文章主要給大家介紹了關(guān)于非常詳細(xì)的Django連接mysql數(shù)據(jù)庫(kù)步驟,需要的朋友可以參考下
    2022-10-10
  • Python實(shí)用技巧之臨時(shí)文件的妙用

    Python實(shí)用技巧之臨時(shí)文件的妙用

    當(dāng)我們用Python編寫程序時(shí),有時(shí)候需要臨時(shí)存儲(chǔ)數(shù)據(jù)且不希望占用多少內(nèi)存,這些情況下以創(chuàng)建臨時(shí)文件的方式進(jìn)行處理,既不會(huì)干擾本地文件系統(tǒng),又安全省事。本文主要介紹了臨時(shí)文件的一些妙用,希望大家能夠喜歡
    2023-02-02
  • Python中HMAC加密算法的應(yīng)用

    Python中HMAC加密算法的應(yīng)用

    HMAC?算法可用于驗(yàn)證在應(yīng)用程序之間傳遞或存儲(chǔ)在潛在易受攻擊位置的信息的完整性,因此本文為大家整理了一些Python中HMAC加密算法的應(yīng)用,希望對(duì)大家有所幫助
    2023-05-05
  • python中dict字典的查詢鍵值對(duì) 遍歷 排序 創(chuàng)建 訪問(wèn) 更新 刪除基礎(chǔ)操作方法

    python中dict字典的查詢鍵值對(duì) 遍歷 排序 創(chuàng)建 訪問(wèn) 更新 刪除基礎(chǔ)操作方法

    字典的每個(gè)鍵值(key=>value)對(duì)用冒號(hào)(:)分割,每個(gè)對(duì)之間用逗號(hào)(,)分割,整個(gè)字典包括在花括號(hào)({})中,本文講述了python中dict字典的查詢鍵值對(duì) 遍歷 排序 創(chuàng)建 訪問(wèn) 更新 刪除基礎(chǔ)操作方法
    2018-09-09
  • 淺析python字符串前加r、f、u、l 的區(qū)別

    淺析python字符串前加r、f、u、l 的區(qū)別

    這篇文章主要介紹了淺析python字符串前加r、f、u、l 的區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • python2與python3中關(guān)于對(duì)NaN類型數(shù)據(jù)的判斷和轉(zhuǎn)換方法

    python2與python3中關(guān)于對(duì)NaN類型數(shù)據(jù)的判斷和轉(zhuǎn)換方法

    今天小編就為大家分享一篇python2與python3中關(guān)于對(duì)NaN類型數(shù)據(jù)的判斷和轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python比較兩個(gè)日期的兩種方法詳解

    Python比較兩個(gè)日期的兩種方法詳解

    我們使用Python處理日期/時(shí)間的時(shí)候,經(jīng)常會(huì)遇到各種各樣的問(wèn)題。本文為大家總結(jié)了兩個(gè)Python比較兩個(gè)日期的方法,需要的可以參考一下
    2022-07-07

最新評(píng)論

合作市| 宜君县| 财经| 平定县| 县级市| 麻栗坡县| 天长市| 千阳县| 鄂伦春自治旗| 腾冲县| 沙河市| 交口县| 车险| 屏东县| 西安市| 海丰县| 望城县| 昭苏县| 乌鲁木齐县| 肥城市| 咸宁市| 奈曼旗| 阳东县| 浦北县| 永靖县| 栖霞市| 辽阳县| 孟津县| 清水河县| 元朗区| 亳州市| 镇原县| 酒泉市| 湖北省| 大安市| 丰宁| 新津县| 乡宁县| 兴山县| 淮安市| 扎赉特旗|