作者xluna (愚某人)
看板Python
标题[范例] dir()用於command help message
时间Mon Dec 18 03:00:57 2006
#!/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)