[範例] dir()用於command help message
#!/usr/bin/python
# 環境: Ubuntu Linux 6.06
# 說明:
# 今天看教學網頁(講到dir,__import__)寫的練習作品, 會將cmd開頭的
# function當成command 將function註解當成command說明,自動生成help
# message.
#
# 可以直接從這邊下載檔案, 我是程式苦手, 請鞭小力點 = =
# http://kalug.linux.org.tw/~hychen/downloads/show_cmds_by_auto.py
import re,sys
def get_cmds(module):
try:
instance = __import__(module)
except ImportError:
print "import module error"
sys.exit(0)
cmds = {}
for func_name in dir(instance):
if re.match('^cmd_', func_name):
cmds[func_name] = getattr(instance, func_name)
return cmds
# Commands
# cmd_help() 會顯示這個程式有哪些 command 可用。
# "cmd_"開頭的function會被當成一個command, 註解則會當成command說明
def cmd_help():
""" show help message """
cmdlist = ["%s %s" % (func_name.split('_')[1], func.__doc__) for
func_name,func in get_cmds(__name__).items()]
# display, 這邊應該要顯示檔名而不是__name__ 用錯了 :P
print "USAGE:"+__name__+"[Command] [Argvs]"
print "\n".join(cmdlist)
def cmd_dohi():
""" say hi """
print "hi"
def cmd_yourcmd():
""" ccc """
pass
if __name__ == '__main__':
if len(sys.argv) == 1 :
cmd_help()
sys.exit(0)
else:
func_name = 'cmd_'+sys.argv[1]
cmds = get_cmds(__name__)
# 這樣寫應該也會動, 不過我不知道有沒有什麼效率問題
# func_name in cmds.keys() and cmds[func_name]()
if func_name in cmds.keys():
cmds[func_name]()
--
到頭來,女人終究會變得像他媽媽一樣。
這是女人的悲哀,更是男人的悲哀…
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.10.158
※ 編輯: xluna 來自: 220.135.10.158 (12/18 03:01)
※ 編輯: xluna 來自: 220.135.10.158 (12/18 03:03)
Python 近期熱門文章
PTT數位生活區 即時熱門文章