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

一篇文章看懂python如何執(zhí)行cmd命令

 更新時(shí)間:2023年09月15日 10:04:26   作者:Rocky006  
這篇文章主要給大家介紹了關(guān)于如何通過一篇文章看懂python如何執(zhí)行cmd命令的相關(guān)資料,在Python中可以使用多種方法執(zhí)行cmd命令,文中通過代碼示例將每種方法都介紹的非常詳細(xì),需要的朋友可以參考下

概要

 在進(jìn)行Python編程時(shí),經(jīng)常需要使用到操作系統(tǒng)的命令行,這就要求我們學(xué)會(huì)如何使用Python執(zhí)行cmd命令。

Python執(zhí)行cmd命令的幾種方法

Python是一種強(qiáng)大而靈活的編程語言,它可以很方便地執(zhí)行系統(tǒng)命令,與操作系統(tǒng)進(jìn)行交互。本文將介紹Python執(zhí)行cmd命令的幾種常用方法,以及它們的優(yōu)缺點(diǎn)和使用場景。

1. 使用os模塊的os.system()函數(shù)

os模塊是Python標(biāo)準(zhǔn)庫中的一個(gè)模塊,它提供了一些與操作系統(tǒng)相關(guān)的函數(shù)和變量。其中,os.system()函數(shù)可以將字符串轉(zhuǎn)化成命令在服務(wù)器上運(yùn)行,返回值是命令的退出狀態(tài)碼,0表示成功,1表示失敗,256表示沒有返回結(jié)果。例如:

import os
a = os.system("ping 192.168.1.101") # 使用a接收返回值
print(a)

這種方法的優(yōu)點(diǎn)是簡單易用,不需要額外的模塊導(dǎo)入。缺點(diǎn)是無法獲取命令的輸出內(nèi)容,只能獲取返回值;而且每次執(zhí)行命令都會(huì)創(chuàng)建一個(gè)新的子進(jìn)程,在資源消耗上比較大。

2. 使用os模塊的os.popen()函數(shù)

os.popen()函數(shù)也是os模塊中的一個(gè)函數(shù),它可以通過管道的方式來執(zhí)行系統(tǒng)命令,返回值是一個(gè)文件對(duì)象,可以讀或者寫。如果需要讀取輸出內(nèi)容,可以調(diào)用read()或readlines()方法。例如:

import os
a = os.popen("ipconfig") # 使用a接收返回值
print(a.read()) # 讀取輸出內(nèi)容

這種方法的優(yōu)點(diǎn)是可以獲取命令的輸出內(nèi)容,并對(duì)其進(jìn)行處理;缺點(diǎn)是無法獲取命令的返回值,而且也會(huì)創(chuàng)建新的子進(jìn)程。

3. 使用subprocess模塊

subprocess模塊是Python從2.4版本開始引入的模塊,主要用來取代一些舊的模塊方法,如os.system、os.spawn、os.popen、commands.*等。官方推薦使用該模塊執(zhí)行系統(tǒng)命令,subprocess模塊通過子進(jìn)程來執(zhí)行外部指令,并通過input/output/error管道,獲取子進(jìn)程的執(zhí)行結(jié)果。常用的函數(shù)有subprocess.Popen()、subprocess.call()、subprocess.run()等。

3.1 使用subprocess.Popen()

使用Popen可以創(chuàng)建進(jìn)程,并與進(jìn)程進(jìn)行復(fù)雜的交互。它接受一個(gè)命令或者一個(gè)命令列表作為參數(shù),并返回一個(gè)Popen對(duì)象。通過調(diào)用Popen對(duì)象的communicate()方法可以獲取輸出和錯(cuò)誤信息。例如:

import subprocess
# 使用Popen創(chuàng)建進(jìn)程,并與進(jìn)程進(jìn)行復(fù)雜的交互
proc = subprocess.Popen(
    'ipconfig', # cmd特定的查詢空間的命令
    stdin=None, # 標(biāo)準(zhǔn)輸入 鍵盤
    stdout=subprocess.PIPE, # -1 標(biāo)準(zhǔn)輸出(演示器、終端) 保存到管道中以便進(jìn)行操作
    stderr=subprocess.PIPE, # 標(biāo)準(zhǔn)錯(cuò)誤,保存到管道
    shell=True)
outinfo, errinfo = proc.communicate() # 獲取輸出和錯(cuò)誤信息
print(outinfo.decode('gbk')) # 外部程序 (windows系統(tǒng))決定編碼格式
print(errinfo.decode('gbk'))

這種方法的優(yōu)點(diǎn)是可以靈活地控制輸入和輸出,并與子進(jìn)程進(jìn)行交互;缺點(diǎn)是參數(shù)比較復(fù)雜,而且需要注意編碼格式。

3.2 使用subprocess.call()

使用call執(zhí)行指定的命令,返回命令執(zhí)行狀態(tài),功能類似os.system()函數(shù),參數(shù)shell默認(rèn)為False。例如:

import subprocess
# 使用call執(zhí)行指定的命令,返回命令執(zhí)行狀態(tài)
subprocess.call(['df', '-h']) # 數(shù)組作為參數(shù)運(yùn)行命令

這種方法的優(yōu)點(diǎn)是可以獲取命令的返回值,并且不需要指定shell參數(shù);缺點(diǎn)是無法獲取命令的輸出內(nèi)容。

3.3 使用subprocess.run()

subprocess.run()是Python3.5中新增的函數(shù),執(zhí)行指定的命令,返回一個(gè)包含執(zhí)行結(jié)果的CompletedProcess類的實(shí)例。通過訪問CompletedProcess類的屬性和方法可以獲取更多信息。例如:

import subprocess
# 使用run執(zhí)行指定的命令,返回一個(gè)包含執(zhí)行結(jié)果的CompletedProcess類的實(shí)例
result = subprocess.run(['ls', '-l'])
print(result.returncode) # 返回碼
print(result.stdout) # 標(biāo)準(zhǔn)輸出
print(result.stderr) # 標(biāo)準(zhǔn)錯(cuò)誤

這種方法的優(yōu)點(diǎn)是可以獲取更多信息,并且簡化了Popen類的使用;缺點(diǎn)是只適用于Python3.5及以上版本。

4. 使用cmd模塊

cmd模塊提供了一個(gè)簡單框架用于編寫面向行的命令解釋器??梢酝ㄟ^繼承Cmd類并實(shí)現(xiàn)do_*()方法來自定義解釋器類,并且封裝動(dòng)作方法。例如:

import cmd
class MyShell(cmd.Cmd):
    intro = 'Welcome to my shell. Type help or ? to list commands.\n'
    prompt = '(myshell) '
    file = None
    def do_greet(self, arg):
        'Greet the person'
        print(f'Hello {arg}!')
    def do_exit(self, arg):
        'Exit the shell'
        print('Bye')
        return True
if __name__ == '__main__':
    MyShell().cmdloop()

這種方法的優(yōu)點(diǎn)是可以自定義自己的解釋器,并提供幫助信息和自動(dòng)補(bǔ)全功能;缺點(diǎn)是需要編寫更多代碼,并且不適合復(fù)雜或者交互式的命令。

總體來說:

  • 如果只需要簡單地執(zhí)行一條無需輸出內(nèi)容或者交互式輸入?yún)?shù)等功能時(shí),則可使用os.system()函數(shù)。

  • 如果需要獲取輸出內(nèi)容,則可使用os.popen()函數(shù)或者subprocess.Popen()類。

  • 如果需要獲取返回值,則可使用os.system()函數(shù)或者subprocess.call()函數(shù)。

  • 如果需要與子進(jìn)程進(jìn)行復(fù)雜交互,則可使用subprocess.Popen()類。

  • 如果需要自定義自己的解釋器,則可使用cmd模塊。

總結(jié)

到此這篇關(guān)于python如何執(zhí)行cmd命令的文章就介紹到這了,更多相關(guān)python執(zhí)行cmd命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python解析HTML的五種常用技巧分享

    Python解析HTML的五種常用技巧分享

    HTML是互聯(lián)網(wǎng)世界中的通用語言,用于構(gòu)建網(wǎng)頁,本文將詳細(xì)介紹如何使用Python解析HTML,包括各種方法和示例代碼,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2026-02-02
  • python中時(shí)間、日期、時(shí)間戳的轉(zhuǎn)換的實(shí)現(xiàn)方法

    python中時(shí)間、日期、時(shí)間戳的轉(zhuǎn)換的實(shí)現(xiàn)方法

    這篇文章主要介紹了python中時(shí)間、日期、時(shí)間戳的轉(zhuǎn)換的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python?海象運(yùn)算符(?:=)的三種用法

    Python?海象運(yùn)算符(?:=)的三種用法

    這篇文章主要介紹了Python?海象運(yùn)算符(:=)的三種用法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-06-06
  • Python保存MongoDB上的文件到本地的方法

    Python保存MongoDB上的文件到本地的方法

    這篇文章主要介紹了Python保存MongoDB上的文件到本地的方法,涉及Python調(diào)用pymongo模塊的gridfs方法來操作MongoDB文件的相關(guān)技巧,需要的朋友可以參考下
    2016-03-03
  • Python連接MySQL數(shù)據(jù)庫的四種方法

    Python連接MySQL數(shù)據(jù)庫的四種方法

    用?Python?連接到?MySQL?數(shù)據(jù)庫的方法不是很系統(tǒng),實(shí)際中有幾種不同的連接方法,而且不是所有的方法都能與不同的操作系統(tǒng)很好地配合,本文涵蓋了四種方法,你可以用它們來連接你的Python應(yīng)用程序和MySQL,需要的朋友可以參考下
    2024-08-08
  • 利用python3如何給數(shù)據(jù)添加高斯噪聲

    利用python3如何給數(shù)據(jù)添加高斯噪聲

    高斯噪聲既是符合高斯正態(tài)分布的誤差,一些情況下我們需要向標(biāo)準(zhǔn)數(shù)據(jù)中加入合適的高斯噪聲會(huì)讓數(shù)據(jù)變得有一定誤差而具有實(shí)驗(yàn)價(jià)值,下面這篇文章主要給大家介紹了關(guān)于利用python3如何給數(shù)據(jù)添加高斯噪聲的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 利用python查看官方文檔

    利用python查看官方文檔

    這篇文章主要介紹了利用python查看官方文檔,我們?cè)趯W(xué)習(xí)和工作中,總是會(huì)遇到一些問題,或許官方文檔能解決這一問題,下面我們就來看看python如何查看官方文檔吧
    2022-01-01
  • Python使用設(shè)計(jì)模式中的責(zé)任鏈模式與迭代器模式的示例

    Python使用設(shè)計(jì)模式中的責(zé)任鏈模式與迭代器模式的示例

    這篇文章主要介紹了Python使用設(shè)計(jì)模式中的責(zé)任鏈模式與迭代器模式的示例,責(zé)任鏈模式與迭代器模式都可以被看作為行為型的設(shè)計(jì)模式,需要的朋友可以參考下
    2016-03-03
  • Django如何重置migration的幾種情景

    Django如何重置migration的幾種情景

    這篇文章主要介紹了Django如何重置migration的幾種情景,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • OpenCV圖像修復(fù)cv2.inpaint()的使用

    OpenCV圖像修復(fù)cv2.inpaint()的使用

    這篇博客將介紹如何通過OpenCV中圖像修復(fù)的技術(shù)——cv2.inpaint() 去除舊照片中的小噪音、筆劃等。并提供一個(gè)可交互式的程序,感興趣的可以了解一下
    2021-08-08

最新評(píng)論

林甸县| 高青县| 芦溪县| 兴仁县| 色达县| 土默特左旗| 东辽县| 新津县| 台州市| 岑巩县| 于田县| 舟曲县| 莲花县| 苍南县| 陈巴尔虎旗| 贵港市| 崇左市| 区。| 绥德县| 芜湖县| 贵港市| 南汇区| 郴州市| 滁州市| 福鼎市| 古交市| 页游| 和田市| 黎川县| 阜新市| 营口市| 馆陶县| 山丹县| 遵义市| 手游| 乌兰察布市| 兴城市| 三台县| 乃东县| 诏安县| 阳新县|