Python實(shí)現(xiàn)執(zhí)行Shell命令并獲取輸出
在本文中,我們將學(xué)習(xí)如何借助 os.system() 從 Python 腳本執(zhí)行 cmd 命令。 我們還將學(xué)習(xí)如何借助 Python 中的 subprocess 模塊以更簡單的方式從腳本執(zhí)行 cmd 命令。
從 Python 腳本執(zhí)行 CMD 命令并使用 os.system() 獲取輸出
我們出于不同目的在命令提示符或任何其他終端中執(zhí)行終端命令。 但是,有時,需要在腳本內(nèi)運(yùn)行特定命令。
我們將了解如何直接在 Python 腳本中執(zhí)行它們。 當(dāng)我們進(jìn)行服務(wù)器配置時,它非常方便。
首先,讓我們向您展示一些在終端中工作的命令,例如 dir、cd 或 md。
現(xiàn)在,我們將了解如何在 Python 腳本中包含相同的內(nèi)容。 為此,我們將導(dǎo)入一個名為 os.
os 模塊將幫助我們與操作系統(tǒng)進(jìn)行交互。 os 模塊對文件和文件夾管理等操作系統(tǒng)任務(wù)提供廣泛的支持。
讓我們進(jìn)入代碼。 system() 是一個在類似 shell 中執(zhí)行命令的方法,因此如果我們給它任何命令,它就會繼續(xù)執(zhí)行它們,就像我們在終端中執(zhí)行它們一樣。
系統(tǒng)函數(shù)還可以執(zhí)行一堆命令。 它執(zhí)行您可以在終端中運(yùn)行的每個命令。
我們將使用 try 塊,在該塊內(nèi),我們將使用 system() 方法,這將幫助我們使用終端與操作系統(tǒng)進(jìn)行交互。 如果 try 塊沒有執(zhí)行指定的命令,我們將進(jìn)入 except 塊。
在 system() 方法內(nèi)部,我們必須傳遞命令,但命令類型是 cmd。 為此,我們使用 /k,并在單引號或雙引號內(nèi)輸入我們的命令。
import os try: os.system('cmd /k "date"') except: print('Could not execute command')
讓我們運(yùn)行一下,看看這是否給出了準(zhǔn)確的輸出。
The current date is: 24/08/2022
Enter the new date: (dd-mm-yy)
我們可以看到輸出與命令提示符給出的相同。
您可以執(zhí)行很多命令。 您可以打開記事本或計算器,也可以查看系統(tǒng)信息等等。
如果你想獲取命令返回的內(nèi)容,可以使用 os 模塊的 popen() 函數(shù)獲取。 在這個函數(shù)內(nèi)部,我們可以傳遞命令并使用 readlines() 方法來獲取其內(nèi)容。
我們可以使用很多方法來獲取干凈的數(shù)據(jù)。 這取決于你。
import os DATA=os.popen('help').readlines()[5].strip('\n') print(DATA)
我們可以在任何地方使用這些命令,例如類、循環(huán)和函數(shù)。 這將正常工作,無需將其包裝在函數(shù)中。
import os def CMD_Com(): DATA=os.popen('help').readlines()[5].strip('\n') print(DATA) CMD_Com()
輸出:
CACLS Displays or modifies access control lists (ACLs) of files.
從 Python 腳本執(zhí)行 CMD 命令并使用 Subprocess 模塊獲取輸出
與子流程交互是一項(xiàng)基本技能。 不建議使用 os 模塊在 Python 腳本內(nèi)執(zhí)行終端命令。
使用 os.system() 執(zhí)行終端命令是在 Python 中運(yùn)行命令的一種非常簡單的方法。
os.system() 的功能有限; 正確的方法是使用一個名為 subprocess 的模塊,這使得執(zhí)行終端命令不太具有挑戰(zhàn)性。 使用 subprocess 模塊,我們可以運(yùn)行當(dāng)前正在處理的所有操作系統(tǒng)命令。
這就是我們在操作系統(tǒng)中運(yùn)行所有現(xiàn)有命令的方式,例如打開記事本或檢查當(dāng)前工作目錄,或我們可以使用 subprocess 模塊執(zhí)行的任何其他操作。
import subprocess # subprocess.Popen('notepad') # subprocess.Popen('systeminfo') subprocess.Popen("dir", shell=True)
輸出:
Directory of C:\Users\Dell\Downloads\demo
24/08/2022 07:01 pm <DIR> .
24/08/2022 07:01 pm <DIR> ..
25/08/2022 01:47 am 460 demo.py
1 File(s) 460 bytes
2 Dir(s) 32,532,512,768 bytes free
到此這篇關(guān)于Python實(shí)現(xiàn)執(zhí)行Shell命令并獲取輸出的文章就介紹到這了,更多相關(guān)python執(zhí)行Shell命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 無限級分類樹狀結(jié)構(gòu)生成算法的實(shí)現(xiàn)
這篇文章主要介紹了Python 無限級分類樹狀結(jié)構(gòu)生成算法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Python實(shí)現(xiàn)求解一元二次方程的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)求解一元二次方程的方法,涉及Python基于math包進(jìn)行數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-06-06Python ORM框架SQLAlchemy學(xué)習(xí)筆記之安裝和簡單查詢實(shí)例
這篇文章主要介紹了Python ORM框架SQLAlchemy學(xué)習(xí)筆記之安裝和簡單查詢實(shí)例,簡明入門教程,需要的朋友可以參考下2014-06-06Python warning警告出現(xiàn)的原因及忽略方法
在本篇文章里小編給大家分享的是關(guān)于Python warning警告出現(xiàn)的原因及忽略方法,有需要的朋友們可以學(xué)習(xí)參考下。2020-01-01Python讀取數(shù)據(jù)集并消除數(shù)據(jù)中的空行方法
今天小編就為大家分享一篇Python讀取數(shù)據(jù)集并消除數(shù)據(jù)中的空行方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07flask-socketio實(shí)現(xiàn)WebSocket的方法
這篇文章主要介紹了flask-socketio實(shí)現(xiàn)WebSocket的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07