《可爱的Python》读书笔记(五)
不論戰(zhàn)術(shù)上如何變化,千萬(wàn)不要忘記戰(zhàn)略目標(biāo)。
在前些時(shí)候小白已經(jīng)使用getopt獲得命令行工具。
但是,要完成一個(gè)個(gè)看似簡(jiǎn)單,實(shí)際有 N 多情況的邏輯判定就有點(diǎn)煩人了。
熱心的行者,又出聲了:“使用 cmd 吧!”
cmd模塊,是一個(gè)專門支持命令行界面的模塊。讓我們來(lái)重構(gòu)一下它:
#?-*-?coding:?utf-8?-*- import?sys import?cmdclass?PyCDC(cmd.Cmd):def?__init__(self):#?初始化基類,類的定量應(yīng)該都在初始化時(shí)聲明cmd.Cmd.__init__(self)#?定義命令行提示符self.prompt?=?">"#?定義walk命令所執(zhí)行的操作????def?do_walk(self,?filename):??if?filename?==?"":filename?=?input("請(qǐng)輸入cdc文件名:")print("掃描光盤內(nèi)容保存到:'%s'"?%?filename)#?定義walk命令的幫助輸出????def?help_walk(self):??print("掃描光盤內(nèi)容?walk?cd?and?export?init?'.cdc'")#?定義dir命令所執(zhí)行的操作def?do_dir(self,?pathname):??if?pathname?==?"":pathname?=?input("請(qǐng)輸入指定保存/搜索目錄:")#?定義dir(命令的幫助輸出????def?help_dir(self):??print("指定保存/搜索目錄")#?定義find命令所執(zhí)行的操作???def?do_find(self,?keyword):??if?keyword?==?"":keyword?=?input("請(qǐng)輸入搜索關(guān)鍵詞:")#?定義find命令的幫助輸出def?help_find(self):print("搜索關(guān)鍵詞")#?定義quit命令所執(zhí)行的操作def?do_quit(self,?arg):sys.exit(1)#?定義quit命令的幫助輸出def?help_quit(self):print("Syntax:quit")print("--terminates?the?application")#?定義quit的快捷方式do_q?=?do_quitif?__name__?==?'__main__':cdc?=?PyCDC()cdc.cmdloop()運(yùn)行效果如下:
可以看到,此代碼純粹是用來(lái)嘗試cmd模塊功能的,只能打印輸出信息,沒(méi)有任何實(shí)際作用。
從這個(gè)例子可以看出,首先PyCDC類繼承cmd.Cmd類,然后在類中定義了walk,dir,find和quit,而命令q被作為quit的短命令形式。(也就是說(shuō),若須另外定義一條命令,如command,只要在PyCDC類中增加一個(gè) do_command 函式)而該命令對(duì)應(yīng)的幫助信息由help_command 函式給出。
就像示例中所寫(xiě)的那樣,自定義的PyCDC類提供了的命令,是可以正常使用它們的,而xx命令是沒(méi)有定義的,所以命令行提示為未知語(yǔ)法。最后的q命令和quit是一樣的功能,即退出程序。
哈哈,可以運(yùn)行起來(lái)!可以看的出在代碼中,按代碼的復(fù)用尺度來(lái)分,從小到大應(yīng)該是:代碼行→函式→類→模塊
好像還有更大的一級(jí)包,具體現(xiàn)在還用不上,那就先不管它了。
轉(zhuǎn)載于:https://blog.51cto.com/9473774/2090044
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的《可爱的Python》读书笔记(五)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: solidity mapping of
- 下一篇: python中引用上层路径