亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python執(zhí)行系統(tǒng)命令的五種方式小結(jié)

 更新時(shí)間:2024年01月11日 16:53:00   作者:程序無(wú)涯海  
在日常開(kāi)發(fā)中,有時(shí)需要在Python腳本中執(zhí)行系統(tǒng)命令,Python有五種方式來(lái)執(zhí)行系統(tǒng)命令(推薦使用第五種),本文為大家整理了這五種方法的具體使用,希望對(duì)大家有所幫助

在日常開(kāi)發(fā)中,有時(shí)需要在Python腳本中執(zhí)行系統(tǒng)命令,Python有五種方式來(lái)執(zhí)行系統(tǒng)命令,推薦使用第五種。

python執(zhí)行系統(tǒng)命令的五種方式

方法1: os.system

這是最簡(jiǎn)單的方法,適合簡(jiǎn)單的業(yè)務(wù)場(chǎng)景,輸入為完整命令字符串,命令執(zhí)行結(jié)果輸出到控制臺(tái);執(zhí)行成功,返回值為0,失敗返回值大于0。

import os
result = os.system("ls -a")

方法2:os.popen

和上面一個(gè)類(lèi)似,輸入完整的命令字符串,但是結(jié)果不會(huì)直接輸出,會(huì)保存到返回值中,調(diào)用read()可以讀取結(jié)果。

import os
result = os.popen("ls -a")
print(result.read())

方法3:subprocess.run

subprocess.run 是 Python 中 subprocess 模塊的一個(gè)函數(shù),用于運(yùn)行子進(jìn)程。它是 Python 3.5 版本引入的。subprocess.run 提供了一種簡(jiǎn)單的方式來(lái)替代較老的 subprocess.call 函數(shù),更方便地運(yùn)行子進(jìn)程并等待其完成。執(zhí)行命令后,運(yùn)行結(jié)果保存在CompletedProcess類(lèi)實(shí)例中,并返回。更加靈活,可以將命令返回的結(jié)果輸出到指定的地方,比如輸出到控制臺(tái)、或者日志文件等。

import subprocess

# 定義要運(yùn)行的命令
command = ["ls", "-l"]

# 使用 subprocess.run 運(yùn)行命令, 如果不設(shè)置stdout參數(shù),會(huì)默認(rèn)輸出到控制臺(tái)
result = subprocess.run(command, stdout=subprocess.PIPE, text=True)

# 輸出命令的結(jié)果
print("Return code:", result.returncode)
print("Output:\n", result.stdout)

這個(gè)例子中,我們定義了一個(gè)要運(yùn)行的命令(列出當(dāng)前目錄的文件和文件夾),然后使用 subprocess.run 來(lái)運(yùn)行它。stdout=subprocess.PIPE 參數(shù)指定將子進(jìn)程的標(biāo)準(zhǔn)輸出捕獲,而 text=True 參數(shù)確保輸出是文本形式。subprocess.run 的返回結(jié)果是一個(gè) CompletedProcess 對(duì)象,包含了運(yùn)行結(jié)果的一些信息,如返回碼、標(biāo)準(zhǔn)輸出等。請(qǐng)注意,subprocess.run 默認(rèn)是同步執(zhí)行的,即會(huì)等待子進(jìn)程執(zhí)行完成后再返回。如果你需要異步執(zhí)行或更高級(jí)的控制,可以考慮使用 asyncio 模塊或 subprocess.Popen 類(lèi)。

stdout參數(shù)也可以設(shè)置為外部文件

同理,不設(shè)置stderr參數(shù)時(shí),外部命令執(zhí)行失敗會(huì)直接拋出錯(cuò)誤信息,將錯(cuò)誤信息輸出在控制臺(tái);一旦設(shè)置,則根據(jù)stderr參數(shù)進(jìn)行重定向。

方法4:subprocess.call

subprocess.call 是 subprocess 模塊中的一個(gè)函數(shù),用于運(yùn)行命令并等待其完成。它是相對(duì)較老的方法,而在較新版本的 Python 中,subprocess.run 被推薦用來(lái)替代 subprocess.call。這里不推薦使用也不做介紹了。

方法5:subprocess.Popen

subprocess.Popen 是 subprocess 模塊中的一個(gè)類(lèi),用于創(chuàng)建和管理子進(jìn)程。與 subprocess.call 和 subprocess.run 不同,subprocess.Popen 提供了更靈活的控制,允許你與子進(jìn)程的輸入、輸出進(jìn)行交互,以及對(duì)進(jìn)程的其他方面進(jìn)行更詳細(xì)的配置。

下面是一個(gè)簡(jiǎn)單的使用示例:

import subprocess

# 定義要運(yùn)行的命令
command = ["ls", "-l"]

# 使用 subprocess.Popen 創(chuàng)建子進(jìn)程
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

# 等待子進(jìn)程完成,并獲取輸出和錯(cuò)誤
stdout, stderr = process.communicate()

# 輸出子進(jìn)程的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤
print("Standard Output:\n", stdout)
print("Standard Error:\n", stderr)

# 獲取子進(jìn)程的返回碼
return_code = process.returncode
print("Return code:", return_code)

在這個(gè)例子中,我們使用 subprocess.Popen 創(chuàng)建了一個(gè)子進(jìn)程,指定了要運(yùn)行的命令以及捕獲標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤。然后,使用 communicate 方法等待子進(jìn)程完成,并獲取其輸出和錯(cuò)誤。

subprocess.Popen 的構(gòu)造函數(shù)接受許多參數(shù),允許你自定義子進(jìn)程的各個(gè)方面。例如,你可以指定工作目錄、環(huán)境變量、文件描述符、標(biāo)準(zhǔn)輸入等。更多詳細(xì)信息可以參考 Python 官方文檔:subprocess.Popen。

需要注意的是,與 subprocess.call 和 subprocess.run 不同,subprocess.Popen 不會(huì)等待子進(jìn)程完成,你需要顯式調(diào)用 communicate 或其他等待方法來(lái)等待子進(jìn)程完成。

總結(jié)

如果不知道用哪種就推薦使用subprocess.Popen,簡(jiǎn)單場(chǎng)景下用os.system就可以了。

以上就是Python執(zhí)行系統(tǒng)命令的五種方式小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Python執(zhí)行系統(tǒng)命令的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python兩個(gè)list[]相加的實(shí)現(xiàn)方法

    python兩個(gè)list[]相加的實(shí)現(xiàn)方法

    這篇文章主要介紹了python兩個(gè)list[]相加的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python?skimage圖像處理

    python?skimage圖像處理

    這篇文章主要為大家介紹了python?skimage圖像處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 淺談keras中自定義二分類(lèi)任務(wù)評(píng)價(jià)指標(biāo)metrics的方法以及代碼

    淺談keras中自定義二分類(lèi)任務(wù)評(píng)價(jià)指標(biāo)metrics的方法以及代碼

    這篇文章主要介紹了淺談keras中自定義二分類(lèi)任務(wù)評(píng)價(jià)指標(biāo)metrics的方法以及代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • 快速進(jìn)修Python指南之函數(shù)進(jìn)階

    快速進(jìn)修Python指南之函數(shù)進(jìn)階

    這篇文章主要為大家介紹了Java開(kāi)發(fā)者快速進(jìn)修Python指南之函數(shù)進(jìn)階示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • python爬取w3shcool的JQuery課程并且保存到本地

    python爬取w3shcool的JQuery課程并且保存到本地

    本文主要介紹python爬取w3shcool的JQuery的課程并且保存到本地的方法解析。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • Python?Celery定時(shí)任務(wù)詳細(xì)講解

    Python?Celery定時(shí)任務(wù)詳細(xì)講解

    這篇文章主要介紹了Python?Celery定時(shí)任務(wù)詳細(xì)講解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • 用Python爬取英雄聯(lián)盟的皮膚詳細(xì)示例

    用Python爬取英雄聯(lián)盟的皮膚詳細(xì)示例

    大家好,本篇文章主要講的是用Python爬取英雄聯(lián)盟的皮膚詳細(xì)示例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • python程序控制NAO機(jī)器人行走

    python程序控制NAO機(jī)器人行走

    這篇文章主要為大家詳細(xì)介紹了python程序控制NAO機(jī)器人行走,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python對(duì)列表排序的方法實(shí)例分析

    Python對(duì)列表排序的方法實(shí)例分析

    這篇文章主要介紹了Python對(duì)列表排序的方法,實(shí)例分析了Python列表排序函數(shù)的相關(guān)使用技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • Windows系統(tǒng)配置python腳本開(kāi)機(jī)啟動(dòng)的3種方法分享

    Windows系統(tǒng)配置python腳本開(kāi)機(jī)啟動(dòng)的3種方法分享

    這篇文章主要介紹了Windows系統(tǒng)配置python腳本開(kāi)機(jī)啟動(dòng)的3種方法分享,本文講解了開(kāi)始菜單啟動(dòng)項(xiàng)實(shí)現(xiàn)、開(kāi)機(jī)腳本、通過(guò)一個(gè)服務(wù)調(diào)用該腳本三種方法,需要的朋友可以參考下
    2015-03-03

最新評(píng)論