Python中cmd模組的使用說明
Python中包含一個公共類cmd,它可以用於互動式shell和其它命令直譯器等的基類。預設情況下,它使用readline來進行互動式操作、命令列編輯和命令完成。
使用cmd建立的命令列直譯器迴圈讀取輸入的所有行並且解析它們,然後傳送命令給一個合適的命令處理器。輸入行為解析成兩個部分:命令和引數。如果使用者輸入cmd param,它解釋成命令cmd和引數param,然後使用param作為引數呼叫do_cmd方法。如果do_cmd命令處理器返回真,那麼程式會乾淨的退出,否則會繼續等待下一個命令的輸入。
一個簡單的列印目錄檔案或目錄的例子:
#-*- coding:gbk-*-
import cmd
import os
import sys
classCLI(cmd.Cmd):
def __init__(self):
cmd.Cmd.__init__(self)
self.prompt = "> " # define command prompt
def do_dir(self, arg):
if not arg:
self.help_dir()
elif os.path.exists(arg):
print"\n".join(os.listdir(arg))
else:
print "No such pathexists."
def help_dir(self):
print "syntax: dir path -- displaya list of files and directories"
def do_quit(self, arg):
return True
def help_quit(self):
print "syntax: quit -- terminatesthe application"
# define the shortcuts
do_q = do_quit
if __name__ =="__main__":
cli = CLI()
cli.cmdloop()
上面的程式碼中self.prompt用於修改命令列的提示符。
說明:在cmd.Cmd派生類中,以do_*開頭為命令,以help_*開頭的為幫助,成員函式的__doc__可以用作為幫助說明。
可以使用self.intro = “Welcomemessage”來輸出歡迎資訊。
當列印幫助的時候,使用doc_header、misc_header、undoc_header可以用於格式化輸出。
通過按下TAB可以實現自動完成,多個選項的情況下按下2個TAB鍵可以實現列出所有選項,自動完成的方法新增字首complete_。
defcomplete_dir(self, text, line, begidx, endidx):
if not text:
completions = ["aaa","bbb", "ccc"]
else:
completions = ["ddd","eee",]
#print completions
return completions
注意:自動補全只在Linux下有效。
在cmd中幾種可以過載的方法,可以用於顯示動作或者改變基類的行為。一般而言由於preloop()和postloop()的存在,不需要也沒有必要過載cmdloop()方法。
每次迭代cmdloop()和onecmd()來分發命令給處理器時,實際輸入行為使用parseline()來解析,建立一個元組包含命令和引數。如果改行為空會呼叫emptyline()方法。預設實現執行以前的命令,如果改行包含一個命令,首先呼叫precmd(),然後查詢呼叫處理器的方法,不管有沒有找到命令都會呼叫postcmd()。
為了補充標準命令處理,cmd包含兩個特殊命令的字首,問號(?)相當於內建的幫助命令,感嘆號(!)會對映到do_shell(),以執行其它的命令,感嘆號需要有do_shell方法才會啟用,需要自行新增。
def do_shell(self, arg):
"run a shell commad"
print ">", arg
sub_cmd = subprocess.Popen(arg,shell=True, stdout=subprocess.PIPE)
print sub_cmd.communicate()[0]
相關推薦
Python中cmd模組的使用說明
Python中包含一個公共類cmd,它可以用於互動式shell和其它命令直譯器等的基類。預設情況下,它使用readline來進行互動式操作、命令列編輯和命令完成。 使用cmd建立的命令列直譯器迴圈讀取輸入的所有行並且解析它們,然後傳送命令給一個合適的命令處理器。輸入
python中multiprocessing模組之Pipe管道
原文地址,本文在原文基礎上添加了部分註釋。 multiprocessing.Pipe([duplex]) 方法返回2個連線物件(conn1, conn2),代表管道的兩端,預設duplex為True,是雙向通訊。如果duplex為False,則conn1只能用來接收訊息,conn2只能用來
python中os模組的作用
簡介 OS模組簡單的來說它是一個Python的系統程式設計的操作模組,可以處理檔案和目錄這些我們日常手動需要做的操作。如果你希望你的程式能夠與平臺無關的話,這個模組是尤為重要的。 常用函式和變數 os.sep可以取代作業系統特定的路徑分隔符。windows下為 “\” os.
Python中Matplotlib模組的簡單使用
目錄 Matplotlib pyplot類 pyplot.plot() 配置屬性 pyplot.subplot() Matplotlib Matplotlib 是 Python 2D 繪圖領域使用最廣泛的套件。它能讓使用者很輕鬆地將資料圖形化,並且提供多樣化的輸出格式
Python中Numpy模組的使用
目錄 NumPy ndarray物件 Numpy資料型別 Numpy陣列屬性 NumPy NumPy(Numerical Python) 是 Python 的一個擴充套件程式庫,支援大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫。Nupmy可用來儲存和處
Python中 Wxpy模組以及其監控
概述: 本文主要分享一下博主在學習wxpy 的過程中開發的一個小程式。博主在最近有一個監控報警的需求需要完成,然後剛好在學習wxpy 這個東西,因此很巧妙的將工作和學習聯絡在一起。 博文中主要使用到的技術設計到Python,Redis,以及Java。涉及到的技術看
Python中logging模組
1、日誌級別 日誌級別 數值 Critical 50 Error 40 Warning 30 Info 20
Python中shodan模組的使用
關於shodan的安裝和使用,傳送門——> 滲透測試之Shodan的安裝和使用 常用 Shodan 庫函式 shodan.Shodan(key) :初始化連線API Shodan.count(query, facets=None):返回查詢結果數量
python 歷險記(五)—— python 中的模組
目錄 前言 基礎 模組化程式設計 模組化有哪些好處? 什麼是 python 中的模組? 引入模組有幾種方式? 模組的查詢順序 模組中包含執行語句的情況 用 dir() 函式來窺探模組 python 的內建模組有哪些? 結語 參考文件
python中socket模組詳解
socket模組簡介 網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個連線的一端稱為一個socket。socket通常被叫做“套接字”,用於描述IP地址和埠,是一個通訊鏈的控制代碼,可以用來實現不同虛擬機器或不同計算機之間的通訊。在Internet上的主機一般運行了多個服務
python中configparser模組的使用
configparser模組用於生成和修改常見配置文件,當前模組的名稱在 python 3.x 版本中變更為 configparser。 首先要寫一個如下所示的配置檔案: [DEFAULT] serveraliveinterval = 45 compression = yes c
Python中 json模組基礎功能小結
json支援的資料型別:int, bool, str, list, dict, Null;不支援的資料型別有:set,函式等; json 的優勢,相對其他序列化資料模組,json將資料序列化為字元存入檔案後的內容易讀易懂,且可以和通行很多語言互動資料,給不同語言的程式設計師之間互通資料提供了極大的便利性;
Python中xlrd模組使用
安裝xlrd 該模組需要自行安裝,直接使用pip安裝就能安裝 簡單使用 測試使用的表格 1、開啟表格檔案並獲取所有sheet名稱 >>> rb = xlrd.open_workbook(r'E:\py-test\tests.xls') >>
Python中collections模組的用法
在內建資料型別(dict、list、set、tuple)的基礎上,collections模組提供了幾個額外的資料型別: namedtuple:生成可以使用名字來訪問元素內容的tuple,通常用來增強程式碼的可讀性, 在訪問一些tuple型別的資料時尤其好用. deque
Python中inspect模組的一些認識
學習python時遇到了inspect模組的使用,不甚瞭解,在此簡要的認識一下。 inspect模組主要提供了四種用處: 對是否是模組,框架,函式等進行型別檢查。 獲取原始碼 獲取類或函式的引數資訊 解析堆疊 這裡我不詳細的敘述這四種用法,噹噹講一
python 中 seaborn 模組畫熱度圖
https://seaborn.pydata.org/generated/seaborn.heatmap.html#seaborn.heatmap 使用seaborn這個模組畫熱度圖,其中mask引數決定了畫那一塊兒。mask矩陣的大小和資料矩陣的大小是一直的,其中0表示fal
Python中fnmatch模組的使用
fnmatch()函式匹配能力介於簡單的字串方法和強大的正則表示式之間,如果在資料處理操作中只需要簡單的萬用字元就能完成的時候,這通常是一個比較合理的方案。此模組的主要作用是檔名稱的匹配,並且匹配的模式使用的Unix shell風格。原始碼很簡單: """Filename matching with
python中lxml模組下的xpath用法
安裝 pypi下載地址:https://pypi.python.org/pypi/lxml/3.4.2#downloads pip install lxml XPath 是一門在 XML 文件中查詢資訊的語言。XPath 可用來在 XML 文件中對元素和屬
Python中collections模組的使用
本文將詳細講解collections模組中的所有類,和每個類中的方法,從原始碼和效能的角度剖析。 一個模組主要用來幹嘛,有哪些類可以使用,看__init__.py就知道 '''This module implements specialized container datatyp
python中 os模組操作檔案路徑
python中的os.path模組用法: dirname() 用於去掉檔名,返回目錄所在的路徑 如: >>> import os >>> os.path.dirname('d:\\library\\book.txt') >>>