我使用getopt来解析python脚本中的命令行参数。是否可以为命令行参数设置默认值? 我有以下代码:
try:
opts, args = getopt.getopt(argv,"htt:tf:d:",["from=","to=","on="])
except getopt.GetoptError:
print 'logReader.py -f <from> -t <to> -d <on>'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'logReader.py -f <from> -t <to> -d <on>'
sys.exit()
elif opt in ("-f", "--from"):
fromTime = arg
elif opt in ("-t", "--to"):
toTime = arg
elif opt in ("-d", "--on"):
onDate = arg
如果未设置from
,我需要这样做,fromTime
应设置为某个默认值。
答案 0 :(得分:2)
使用内置的argparse包,您可以执行此操作:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-p', '--population',
required=False,
type=int,
default=100,
dest="pop",
metavar="<number of individuals>",
help="Number of individuals in each population" )
parser.add_argument('-g', '--generation',
required=False,
type=int,
default=30,
dest="ngen",
metavar="<number of generations>",
help="Number of generations to calculate" )
args = parser.parse_args()
如您所见:定义参数类型,默认值,用法信息,参数的长版本和短版本等。一旦实例化,可以使用其dest
属性通过对象访问这些值。例如,参数-g
将存储在args.ngen
中,-p
存储在args.pop
中。
关于兼容性问题,argparse适用于Python =&gt; 2.3,根据其pypi page。只需安装或捆绑即可。
答案 1 :(得分:1)
使用argparse,从tutorial修改:
import argparse
parser = argparse.ArgumentParser()
# The -- indicates that it is optional
parser.add_argument("--verbosity", help="increase output verbosity")
args = parser.parse_args()
if args.verbosity:
print "verbosity turned on"
else:
print "Default option"
这样,如果没有添加可选参数,它将执行else语句。它还添加了帮助手册,您可以在其中解释所有选项。如果它无法解释参数,它会自动返回脚本的选项。 (自动执行此logReader.py -f <from> -t <to> -d <on>
)
评论中的OP指出,由于版本问题,argparse不在考虑范围内。