【发布时间】:2012-10-08 16:54:33
【问题描述】:
问题:需要解析一些可以按任意顺序排列的特定参数,非可选参数:-h -d -src -dst
我是 Python 新手,已经研究过 getopt 和 argparse 等替代方案,但找不到一个可行的示例,因此按照以下方式进行自定义;
argv=sys.argv[1:]
args=[]
for idx, arg in enumerate(argv):
# if is arg
if arg.startswith("-"):
# find arg match
for i in ("-h","-d:","-src:","-dst:"):
# requires var
if i == arg + ':' and idx < len(argv)-1:
if not argv[idx+1].startswith("-"):
args.append((arg,argv[idx+1]))
break
# no var
elif i == arg:
args.append((arg,""))
break
else:
continue
# may contain duplicates
print(args)
# no dupes
print(set(args))
谁能提出改进和/或更好的例子来实现问题目标?
【问题讨论】:
-
我觉得值得一提的是,你所采取的策略也是值得尊重的。一种改进可能是在收到无法识别的参数(不以“-”开头)或选项(以“-”开头)时抱怨。
-
@avasal 读得很好,确实很有帮助,谢谢!
标签: python arguments python-2.6 argparse