python的argparse总是感觉太复杂、不够简洁。还是怀念perl的Getopt::Long,返回一个简单的哈希数组足以。
常见的参数格式有以下几种:
-xxx '-'开头,只有关键字,不带值
-xxx=abc '-'开头,key-value对
+xxx=abc '+'开头
-xxx abc '-'开头,等于号用空格带替
xxx 不带特殊前缀
--xxx[=abc] 双'-'开头
一般自己写的脚本里并不需要这么杂,规定前两种也够用了。比如,-verdi表示打开verdi,-lst=rtl.flist表示rtl的文件列表等。
其实python的sys.argv已经帮我们拿到了命令行参数。sys.argv是一个列表,按照输入顺序,用空格切分,依次存储各参数。例如,
运行结果:
列表第0个是当前的程序(脚本)名,后面依次是输入的参数。
用for循环遍历sys.argv,调用处理函数或者设置全局变量。
当脚本很小,且参数个数只有1~3个时,直接在脚本里判断和处理sys.argv是还很方便的。
考虑到可复用性,我们把上面的脚本写到单独的文件里,比如argopt.py里。并且把处理的结果存储到一个dict变量里,因为dict的key-value跟“参数-值”一致。另外dict在处理key-value对时有一些现成的函数。
在使用时,使用for 'key' in args判断参数是否存在,使用args['key']来引用参数的值。
分享数字集成电路设计中的经验和方法。分享让工作更轻松。