我們經(jīng)常在C/C++中用“system("pause");”作暫停語句外,還有很多可以用system()調(diào)用,比如以下這些dos命令的功能也很不錯:
system("title C++顏色設(shè)置程序"); //設(shè)置控制臺窗口的標(biāo)題,即cmd.exe的標(biāo)題 system("mode con cols=64 lines=25"); //設(shè)置窗口寬度高度 system("date /t"); //顯示日期 system("time /t"); //顯示時間 system("shutdown -s -t 3600"); //延時關(guān)機(jī) 3600秒即一小時后關(guān)機(jī) system("shutdown -a"); //取消延時關(guān)機(jī) system("color 0B"); //設(shè)置文本和背景顏色
核心就用system()函數(shù)調(diào)用windows操作系統(tǒng)的DOS命令來做點(diǎn)事情,iOS、linux系統(tǒng)中也一樣,僅需把引號中的命令行字符串換成對應(yīng)操作系統(tǒng)的命令即可。
Python語言中,os庫的system()函數(shù)同樣也是這個功能,舉個例子:
>>> import os >>> for _ in range(5): t = os.system("echo ?") >>> t 0 >>>
以上代碼可以發(fā)出5次蜂鳴聲,這個實(shí)質(zhì)就是ascii字符7(beep)的顯示。它在Python IDLE窗口中呈現(xiàn)為“echo ?”中的那個粗圓點(diǎn),可以用alt鍵+小鍵盤上的007鍵入;在DOS窗口下的python中除了這個方法還能用“Ctrl+G”錄入,呈現(xiàn)為“echo ^G”。
代碼運(yùn)行結(jié)束后,t 就接受了echo命令的返回值,DOS命令執(zhí)行成功一般都返回 0 。
同樣換個DOS命令“Date /t”來顯示日期:
>>> import os >>> os.system("Date /t") 0 >>>
同樣,也只返回一個 0 ,沒有見到日期顯示,但在控制臺窗口下是可以顯示的:
time 命令也一樣,另外這兩個命令還能用“echo 環(huán)境變量”來實(shí)現(xiàn)。看上圖中語句返回的兩行第一行顯示的是我們想獲取的值,第二行是命令返回值,通過賦值只能得到這個返回值 0 。
題外話:DOS中用兩個%把環(huán)境變量名括起來表示一個環(huán)境變量, 可以用dos命令 set 來顯示和設(shè)置這些系統(tǒng)環(huán)境變量。除了用“set path”外,path 命令可以單獨(dú)顯示 %PATH% 變量。
從上圖中可以看到,用引號和波浪線 :~pos, length 可以把環(huán)境變量值按開始位置和所要長度來分割開,類似python的字符串切片: str="2021-10-19"; str[0:4]。
各個時期的Dos版本的內(nèi)部命令有增有減個數(shù)不定,另外還有很多的外部命令可用。
D:>set os OS=Windows_NT D:>set systemdrive SystemDrive=C: D:>set windir windir=C:Windows D:>set path Path=C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;D:PythonScripts;D:Python PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC D:>set pathext PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC D:>path PATH=C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;D:PythonScripts;D:Python D:>ver Microsoft Windows [版本 6.1.7601] D:>
列出當(dāng)前DOS版本的所有內(nèi)部命令:
>>> import os
>>> print("".join(os.popen("help").readlines()[2:-3]))
ATTRIB 顯示或更改文件屬性。
BREAK 設(shè)置或清除擴(kuò)展式 CTRL+C 檢查。
BCDEDIT 設(shè)置啟動數(shù)據(jù)庫中的屬性以控制啟動加載。
CACLS 顯示或修改文件的訪問控制列表(ACL)。
CALL 從另一個批處理程序調(diào)用這一個。
CD 顯示當(dāng)前目錄的名稱或?qū)⑵涓摹?br /> CHCP 顯示或設(shè)置活動代碼頁數(shù)。
CHDIR 顯示當(dāng)前目錄的名稱或?qū)⑵涓摹?br /> CHKDSK 檢查磁盤并顯示狀態(tài)報告。
CHKNTFS 顯示或修改啟動時間磁盤檢查。
CLS 清除屏幕。
CMD 打開另一個 Windows 命令解釋程序窗口。
COLOR 設(shè)置默認(rèn)控制臺前景和背景顏色。
COMP 比較兩個或兩套文件的內(nèi)容。
COMPACT 顯示或更改 NTFS 分區(qū)上文件的壓縮。
CONVERT 將 FAT 卷轉(zhuǎn)換成 NTFS。您不能轉(zhuǎn)換
當(dāng)前驅(qū)動器。
COPY 將至少一個文件復(fù)制到另一個位置。
DATE 顯示或設(shè)置日期。
DEL 刪除至少一個文件。
DIR 顯示一個目錄中的文件和子目錄。
DISKCOMP 比較兩個軟盤的內(nèi)容。
DISKCOPY 將一個軟盤的內(nèi)容復(fù)制到另一個軟盤。
DISKPART 顯示或配置磁盤分區(qū)屬性。
DOSKEY 編輯命令行、調(diào)用 Windows 命令并創(chuàng)建宏。
DRIVERQUERY 顯示當(dāng)前設(shè)備驅(qū)動程序狀態(tài)和屬性。
ECHO 顯示消息,或?qū)⒚罨仫@打開或關(guān)上。
ENDLOCAL 結(jié)束批文件中環(huán)境更改的本地化。
ERASE 刪除一個或多個文件。
EXIT 退出 CMD.EXE 程序(命令解釋程序)。
FC 比較兩個文件或兩個文件集并顯示它們之間的不同。
FIND 在一個或多個文件中搜索一個文本字符串。
FINDSTR 在多個文件中搜索字符串。
FOR 為一套文件中的每個文件運(yùn)行一個指定的命令。
FORMAT 格式化磁盤,以便跟 Windows 使用。
FSUTIL 顯示或配置文件系統(tǒng)的屬性。
FTYPE 顯示或修改用在文件擴(kuò)展名關(guān)聯(lián)的文件類型。
GOTO 將 Windows 命令解釋程序指向批處理程序
中某個帶標(biāo)簽的行。
GPRESULT 顯示機(jī)器或用戶的組策略信息。
GRAFTABL 啟用 Windows 在圖形模式顯示擴(kuò)展字符集。
HELP 提供 Windows 命令的幫助信息。
ICACLS 顯示、修改、備份或還原文件和
目錄的 ACL。
IF 在批處理程序中執(zhí)行有條件的處理過程。
LABEL 創(chuàng)建、更改或刪除磁盤的卷標(biāo)。
MD 創(chuàng)建一個目錄。
MKDIR 創(chuàng)建一個目錄。
MKLINK 創(chuàng)建符號鏈接和硬鏈接
MODE 配置系統(tǒng)設(shè)備。
MORE 逐屏顯示輸出。
MOVE 將一個或多個文件從一個目錄移動到另一個目錄。
OPENFILES 顯示遠(yuǎn)程用戶為了文件共享而打開的文件。
PATH 為可執(zhí)行文件顯示或設(shè)置搜索路徑。
PAUSE 停止批處理文件的處理并顯示信息。
POPD 還原由 PUSHD 保存的當(dāng)前目錄上一次的值。
PRINT 打印一個文本文件。
PROMPT 改變 Windows 命令提示。
PUSHD 保存當(dāng)前目錄,然后對其進(jìn)行更改。
RD 刪除目錄。
RECOVER 從損壞的磁盤中恢復(fù)可讀取的信息。
REM 記錄批處理文件或 CONFIG.SYS 中的注釋。
REN 重新命名文件。
RENAME 重新命名文件。
REPLACE 替換文件。
RMDIR 刪除目錄。
ROBOCOPY 復(fù)制文件和目錄樹的高級實(shí)用程序
SET 顯示、設(shè)置或刪除 Windows 環(huán)境變量。
SETLOCAL 開始用批文件改變環(huán)境的本地化。
SC 顯示或配置服務(wù)(后臺處理)。
SCHTASKS 安排命令和程序在一部計算機(jī)上按計劃運(yùn)行。
SHIFT 調(diào)整批處理文件中可替換參數(shù)的位置。
SHUTDOWN 讓機(jī)器在本地或遠(yuǎn)程正確關(guān)閉。
SORT 將輸入排序。
START 打開單獨(dú)視窗運(yùn)行指定程序或命令。
SUBST 將驅(qū)動器號與路徑關(guān)聯(lián)。
SYSTEMINFO 顯示機(jī)器的具體的屬性和配置。
TASKLIST 顯示包括服務(wù)的所有當(dāng)前運(yùn)行的任務(wù)。
TASKKILL 終止正在運(yùn)行的進(jìn)程或應(yīng)用程序。
TIME 顯示或設(shè)置系統(tǒng)時間。
TITLE 設(shè)置 CMD.EXE 會話的窗口標(biāo)題。
TREE 以圖形顯示啟動器或路徑的目錄結(jié)構(gòu)。
TYPE 顯示文本文件的內(nèi)容。
VER 顯示 Windows 的版本。
VERIFY 告訴 Windows 驗(yàn)證文件是否正確寫入磁盤。
VOL 顯示磁盤卷標(biāo)和序列號。
XCOPY 復(fù)制文件和目錄樹。
>>> print("".join(os.popen("help").readlines()[1:-2]))
ASSOC 顯示或修改文件擴(kuò)展名關(guān)聯(lián)。
ATTRIB 顯示或更改文件屬性。
BREAK 設(shè)置或清除擴(kuò)展式 CTRL+C 檢查。
BCDEDIT 設(shè)置啟動數(shù)據(jù)庫中的屬性以控制啟動加載。
CACLS 顯示或修改文件的訪問控制列表(ACL)。
CALL 從另一個批處理程序調(diào)用這一個。
CD 顯示當(dāng)前目錄的名稱或?qū)⑵涓摹?br /> CHCP 顯示或設(shè)置活動代碼頁數(shù)。
CHDIR 顯示當(dāng)前目錄的名稱或?qū)⑵涓摹?br /> CHKDSK 檢查磁盤并顯示狀態(tài)報告。
CHKNTFS 顯示或修改啟動時間磁盤檢查。
CLS 清除屏幕。
CMD 打開另一個 Windows 命令解釋程序窗口。
COLOR 設(shè)置默認(rèn)控制臺前景和背景顏色。
COMP 比較兩個或兩套文件的內(nèi)容。
COMPACT 顯示或更改 NTFS 分區(qū)上文件的壓縮。
CONVERT 將 FAT 卷轉(zhuǎn)換成 NTFS。您不能轉(zhuǎn)換
當(dāng)前驅(qū)動器。
COPY 將至少一個文件復(fù)制到另一個位置。
DATE 顯示或設(shè)置日期。
DEL 刪除至少一個文件。
DIR 顯示一個目錄中的文件和子目錄。
DISKCOMP 比較兩個軟盤的內(nèi)容。
DISKCOPY 將一個軟盤的內(nèi)容復(fù)制到另一個軟盤。
DISKPART 顯示或配置磁盤分區(qū)屬性。
DOSKEY 編輯命令行、調(diào)用 Windows 命令并創(chuàng)建宏。
DRIVERQUERY 顯示當(dāng)前設(shè)備驅(qū)動程序狀態(tài)和屬性。
ECHO 顯示消息,或?qū)⒚罨仫@打開或關(guān)上。
ENDLOCAL 結(jié)束批文件中環(huán)境更改的本地化。
ERASE 刪除一個或多個文件。
EXIT 退出 CMD.EXE 程序(命令解釋程序)。
FC 比較兩個文件或兩個文件集并顯示它們之間的不同。
FIND 在一個或多個文件中搜索一個文本字符串。
FINDSTR 在多個文件中搜索字符串。
FOR 為一套文件中的每個文件運(yùn)行一個指定的命令。
FORMAT 格式化磁盤,以便跟 Windows 使用。
FSUTIL 顯示或配置文件系統(tǒng)的屬性。
FTYPE 顯示或修改用在文件擴(kuò)展名關(guān)聯(lián)的文件類型。
GOTO 將 Windows 命令解釋程序指向批處理程序
中某個帶標(biāo)簽的行。
GPRESULT 顯示機(jī)器或用戶的組策略信息。
GRAFTABL 啟用 Windows 在圖形模式顯示擴(kuò)展字符集。
HELP 提供 Windows 命令的幫助信息。
ICACLS 顯示、修改、備份或還原文件和
目錄的 ACL。
IF 在批處理程序中執(zhí)行有條件的處理過程。
LABEL 創(chuàng)建、更改或刪除磁盤的卷標(biāo)。
MD 創(chuàng)建一個目錄。
MKDIR 創(chuàng)建一個目錄。
MKLINK 創(chuàng)建符號鏈接和硬鏈接
MODE 配置系統(tǒng)設(shè)備。
MORE 逐屏顯示輸出。
MOVE 將一個或多個文件從一個目錄移動到另一個目錄。
OPENFILES 顯示遠(yuǎn)程用戶為了文件共享而打開的文件。
PATH 為可執(zhí)行文件顯示或設(shè)置搜索路徑。
PAUSE 停止批處理文件的處理并顯示信息。
POPD 還原由 PUSHD 保存的當(dāng)前目錄上一次的值。
PRINT 打印一個文本文件。
PROMPT 改變 Windows 命令提示。
PUSHD 保存當(dāng)前目錄,然后對其進(jìn)行更改。
RD 刪除目錄。
RECOVER 從損壞的磁盤中恢復(fù)可讀取的信息。
REM 記錄批處理文件或 CONFIG.SYS 中的注釋。
REN 重新命名文件。
RENAME 重新命名文件。
REPLACE 替換文件。
RMDIR 刪除目錄。
ROBOCOPY 復(fù)制文件和目錄樹的高級實(shí)用程序
SET 顯示、設(shè)置或刪除 Windows 環(huán)境變量。
SETLOCAL 開始用批文件改變環(huán)境的本地化。
SC 顯示或配置服務(wù)(后臺處理)。
SCHTASKS 安排命令和程序在一部計算機(jī)上按計劃運(yùn)行。
SHIFT 調(diào)整批處理文件中可替換參數(shù)的位置。
SHUTDOWN 讓機(jī)器在本地或遠(yuǎn)程正確關(guān)閉。
SORT 將輸入排序。
START 打開單獨(dú)視窗運(yùn)行指定程序或命令。
SUBST 將驅(qū)動器號與路徑關(guān)聯(lián)。
SYSTEMINFO 顯示機(jī)器的具體的屬性和配置。
TASKLIST 顯示包括服務(wù)的所有當(dāng)前運(yùn)行的任務(wù)。
TASKKILL 終止正在運(yùn)行的進(jìn)程或應(yīng)用程序。
TIME 顯示或設(shè)置系統(tǒng)時間。
TITLE 設(shè)置 CMD.EXE 會話的窗口標(biāo)題。
TREE 以圖形顯示啟動器或路徑的目錄結(jié)構(gòu)。
TYPE 顯示文本文件的內(nèi)容。
VER 顯示 Windows 的版本。
VERIFY 告訴 Windows 驗(yàn)證文件是否正確寫入磁盤。
VOL 顯示磁盤卷標(biāo)和序列號。
XCOPY 復(fù)制文件和目錄樹。
WMIC 在交互命令外殼里顯示 WMI 信息。
回到正題,發(fā)個小秘技:
怎樣才能獲取dos命令顯示的內(nèi)容而不是返回值?
這要請出os庫的另一個函數(shù) popen()
,和fopen讀取文件差不多,也用readlines()
讀取出信息的每一行;每一行都是一個以" "結(jié)尾的字符串元素,保存在同一個列表里,基本用法如下:
>>> import os >>> os.popen("date /t") <os._wrap_close object at 0x0000000002C82580> >>> #一定要加上readlines()方法: >>> os.popen("date /t").readlines() ["2021/10/19 周二 "] >>> os.popen("set path").readlines() ["PATH=C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem; C:WindowsSystem32WindowsPowerShellv1.0; D:PythonScripts; D:Python ", "PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC "] >>>
自定義幾個能抓取DOS命令返回信息的函數(shù):
>>> import os >>> def Date(): command = "echo %date:~0,4%年%date:~5,2%月%date:~8,2%日" return os.popen(command).readlines()[0][:-1] >>> Date() "2021年10月19日" >>> >>> def Weekday(): command = "echo 星期%date:~-1%" return os.popen(command).readlines()[0][:-1] >>> Weekday() "星期二" >>> >>> def Time(): command = "echo %time%" return os.popen(command).readlines()[0][:8] >>> Time() "13:39:03" >>>
>>> import os >>> def Dir(Drive): command = "dir " + Drive + ":" dirlist = os.popen(command).readlines() for d in dirlist: print(d, end="") print() >>> Dir("C") 驅(qū)動器 C 中的卷是 C_HD 卷的序列號是 401B-F400 C: 的目錄 2021/10/14 09:55 17,783 2021年xxxxxxxxx總結(jié)10.18.xlsx 2021/10/12 10:54 <DIR> Program Files 2021/10/12 10:54 <DIR> Program Files (x86) 2021/09/16 14:45 <DIR> temp 2021/03/18 15:42 <DIR> Users 2021/10/13 15:45 <DIR> Windows 2021/10/11 11:11 <DIR> XSBDownload 1 個文件 17,783 字節(jié) 6 個目錄 93,678,710,784 可用字節(jié) >>>
>>> def Path(): command = "path" dirlist = os.popen(command).readlines() dirlist = dirlist[0][:-1].split(";") for d in dirlist: print(d) print() >>> Path() PATH=C:Windowssystem32 C:Windows C:WindowsSystem32Wbem C:WindowsSystem32WindowsPowerShellv1.0 D:PythonScripts D:Python >>>
dos命令還有很多很多,其中有實(shí)用信息返回的都可以用os.system.popen().readlines()
來獲取。
到此這篇關(guān)于python簡單幾步獲取各種DOS命令顯示的內(nèi)容詳解流程的文章就介紹到這了,更多相關(guān)python DOS命令內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/boysoft2002/article/details/120888355