python運(yùn)行cmd命令10種方式并獲得返回值的高級(jí)技巧
更新時(shí)間:2024年03月18日 11:14:40 作者:《代碼愛(ài)好者》
這篇文章主要給大家介紹了關(guān)于python運(yùn)行cmd命令10種方式并獲得返回值的高級(jí)技巧,主要包括python腳本執(zhí)行CMD命令并返回結(jié)果的例子使用實(shí)例、應(yīng)用技巧,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
python10種方式運(yùn)行cmd命令的高級(jí)技巧
import subprocess # 方法1:使用subprocess模塊的run函數(shù) def run_cmd_1(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: result = subprocess.run(command, shell=True, capture_output=True, text=True) if result.returncode == 0: output = result.stdout.strip() else: output = result.stderr.strip() except Exception as e: output = str(e) return output # 方法2:使用subprocess模塊的check_output函數(shù) def run_cmd_2(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: output = subprocess.check_output(command, shell=True, text=True) output = output.strip() except Exception as e: output = str(e) return output # 方法3:使用os模塊的system函數(shù) def run_cmd_3(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: result = os.system(command) output = "" if result == 0: output = "命令執(zhí)行成功" else: output = "命令執(zhí)行失敗" except Exception as e: output = str(e) return output # 方法4:使用os模塊的popen函數(shù) def run_cmd_4(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: output = os.popen(command).read() output = output.strip() except Exception as e: output = str(e) return output # 方法5:使用commands模塊的getoutput函數(shù) def run_cmd_5(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: output = commands.getoutput(command) output = output.strip() except Exception as e: output = str(e) return output # 方法6:使用commands模塊的getstatusoutput函數(shù) def run_cmd_6(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: status, output = commands.getstatusoutput(command) output = output.strip() except Exception as e: output = str(e) return output # 方法7:使用os模塊的startfile函數(shù) def run_cmd_7(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: os.startfile(command) output = "命令已啟動(dòng)" except Exception as e: output = str(e) return output # 方法8:使用os模塊的spawn函數(shù) def run_cmd_8(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: output = os.spawnl(os.P_WAIT, 'cmd.exe', '/c', command) output = output.strip() except Exception as e: output = str(e) return output # 方法9:使用win32api模塊的ShellExecute函數(shù) def run_cmd_9(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: win32api.ShellExecute(0, 'open', 'cmd.exe', '/c {}'.format(command), '', 0) output = "命令已啟動(dòng)" except Exception as e: output = str(e) return output # 方法10:使用win32api模塊的CreateProcess函數(shù) def run_cmd_10(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: si = win32process.STARTUPINFO() si.dwFlags |= win32process.STARTF_USESHOWWINDOW output = win32api.CreateProcess(None, command, None, None, False, 0, None, None, si)[1].read() output = output.strip() except Exception as e: output = str(e) return output # 示例:運(yùn)行ipconfig命令獲取網(wǎng)絡(luò)配置信息 output = run_cmd_1('ipconfig') print(output)
python12種方式運(yùn)行cmd命令并獲得返回值的高級(jí)技巧
import subprocess import os import commands import win32api import win32process # 方法1:使用subprocess模塊的run函數(shù),返回CompletedProcess對(duì)象 def run_cmd_1(command): """ 運(yùn)行CMD命令并返回CompletedProcess對(duì)象 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: result (CompletedProcess): 命令執(zhí)行的結(jié)果對(duì)象 """ try: result = subprocess.run(command, shell=True, capture_output=True, text=True) except Exception as e: result = str(e) return result # 方法2:使用subprocess模塊的check_output函數(shù),返回命令的輸出結(jié)果 def run_cmd_2(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (bytes): 命令執(zhí)行的輸出結(jié)果 """ try: output = subprocess.check_output(command, shell=True) except Exception as e: output = str(e) return output # 方法3:使用subprocess模塊的call函數(shù),返回命令的返回碼 def run_cmd_3(command): """ 運(yùn)行CMD命令并返回返回碼 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: returncode (int): 命令的返回碼 """ try: returncode = subprocess.call(command, shell=True) except Exception as e: returncode = str(e) return returncode # 方法4:使用subprocess模塊的Popen函數(shù),返回Popen對(duì)象 def run_cmd_4(command): """ 運(yùn)行CMD命令并返回Popen對(duì)象 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: process (Popen): Popen對(duì)象 """ try: process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) except Exception as e: process = str(e) return process # 方法5:使用os模塊的system函數(shù),返回命令的返回碼 def run_cmd_5(command): """ 運(yùn)行CMD命令并返回返回碼 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: returncode (int): 命令的返回碼 """ try: returncode = os.system(command) except Exception as e: returncode = str(e) return returncode # 方法6:使用os模塊的popen函數(shù),返回命令的輸出結(jié)果 def run_cmd_6(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: output = os.popen(command).read() except Exception as e: output = str(e) return output # 方法7:使用commands模塊的getoutput函數(shù),返回命令的輸出結(jié)果 def run_cmd_7(command): """ 運(yùn)行CMD命令并返回輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: output (str): 命令執(zhí)行的輸出結(jié)果 """ try: output = commands.getoutput(command) except Exception as e: output = str(e) return output # 方法8:使用commands模塊的getstatusoutput函數(shù),返回命令的返回碼和輸出結(jié)果 def run_cmd_8(command): """ 運(yùn)行CMD命令并返回返回碼和輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: status (int): 命令的返回碼 output (str): 命令執(zhí)行的輸出結(jié)果 """ try: status, output = commands.getstatusoutput(command) except Exception as e: status = str(e) output = "" return status, output # 方法9:使用os模塊的startfile函數(shù),返回None def run_cmd_9(command): """ 運(yùn)行CMD命令 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: None """ try: os.startfile(command) except Exception as e: pass # 方法10:使用os模塊的spawn函數(shù),返回命令的返回碼 def run_cmd_10(command): """ 運(yùn)行CMD命令并返回返回碼 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: returncode (int): 命令的返回碼 """ try: returncode = os.spawnl(os.P_WAIT, 'cmd.exe', '/c', command) except Exception as e: returncode = str(e) return returncode # 方法11:使用win32api模塊的ShellExecute函數(shù),返回None def run_cmd_11(command): """ 運(yùn)行CMD命令 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: None """ try: win32api.ShellExecute(0, 'open', 'cmd.exe', '/c {}'.format(command), '', 0) except Exception as e: pass # 方法12:使用win32api模塊的CreateProcess函數(shù),返回命令的返回碼和輸出結(jié)果 def run_cmd_12(command): """ 運(yùn)行CMD命令并返回返回碼和輸出結(jié)果 參數(shù): command (str): 要執(zhí)行的CMD命令 返回: returncode (int): 命令的返回碼 output (str): 命令執(zhí)行的輸出結(jié)果 """ try: si = win32process.STARTUPINFO() si.dwFlags |= win32process.STARTF_USESHOWWINDOW output = win32api.CreateProcess(None, command, None, None, False, 0, None, None, si)[1].read() returncode = 0 except Exception as e: returncode = str(e) output = "" return returncode, output # 示例:運(yùn)行ipconfig命令獲取網(wǎng)絡(luò)配置信息,并獲取返回值 result = run_cmd_1('ipconfig') print(result.returncode) print(result.stdout) # 示例:運(yùn)行dir命令獲取文件列表,并獲取輸出結(jié)果 output = run_cmd_2('dir') print(output) # 示例:運(yùn)行ping命令測(cè)試網(wǎng)絡(luò)連接,并獲取返回碼 returncode = run_cmd_3('ping google.com') print(returncode) # 示例:運(yùn)行tasklist命令獲取進(jìn)程列表,并獲取Popen對(duì)象 process = run_cmd_4('tasklist') print(process.stdout.readline()) # 示例:運(yùn)行ipconfig命令獲取網(wǎng)絡(luò)配置信息,并獲取返回碼 returncode = run_cmd_5('ipconfig') print(returncode) # 示例:運(yùn)行dir命令獲取文件列表,并獲取輸出結(jié)果 output = run_cmd_6('dir') print(output) # 示例:運(yùn)行ping命令測(cè)試網(wǎng)絡(luò)連接,并獲取輸出結(jié)果 output = run_cmd_7('ping google.com') print(output) # 示例:運(yùn)行tasklist命令獲取進(jìn)程列表,并獲取返回碼和輸出結(jié)果 status, output = run_cmd_8('tasklist') print(status) print(output) # 示例:運(yùn)行notepad命令打開(kāi)記事本應(yīng)用程序 run_cmd_9('notepad') # 示例:運(yùn)行ping命令測(cè)試網(wǎng)絡(luò)連接,并獲取返回碼 returncode = run_cmd_10('ping google.com') print(returncode) # 示例:運(yùn)行notepad命令打開(kāi)記事本應(yīng)用程序 run_cmd_11('notepad') # 示例:運(yùn)行tasklist命令獲取進(jìn)程列表,并獲取返回碼和輸出結(jié)果 returncode, output = run_cmd_12('tasklist') print(returncode) print(output)
總結(jié)
到此這篇關(guān)于python運(yùn)行cmd命令10種方式并獲得返回值的文章就介紹到這了,更多相關(guān)python運(yùn)行cmd命令獲得返回值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
寶塔部署django項(xiàng)目的實(shí)現(xiàn)步驟(圖文教程)
本文主要介紹了寶塔部署django項(xiàng)目的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-032行Python代碼實(shí)現(xiàn)給pdf文件添加水印
你們?cè)诮oPDF文件添加水印時(shí),還在手動(dòng)一頁(yè)頁(yè)添加嗎?本文小編為大家?guī)?lái)了一個(gè)更方便的方法,即用Python的2行代碼來(lái)實(shí)現(xiàn),感興趣的小伙伴可以學(xué)習(xí)一下2022-02-02Matlab如何實(shí)現(xiàn)矩陣復(fù)制擴(kuò)充
這篇文章主要介紹了使用Matlab實(shí)現(xiàn)矩陣復(fù)制擴(kuò)充的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Python去除字符串中某個(gè)字符的多種實(shí)現(xiàn)方法
這篇文章主要介紹了Python去除字符串中某個(gè)字符的多種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08python自動(dòng)保存百度盤資源到百度盤中的實(shí)例代碼
這篇文章主要介紹了python自動(dòng)保存百度盤資源到百度盤中的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08