我在python 3.4中遇到了args.parse的怪异问题,我需要一些帮助。我只是从python开始,所以它可能有些愚蠢。
我在吵架
parser.add_argument('-solr', type=str, default='http://localhost:8983/solr/', nargs='+', help='Address of Solr server (ex: http://192.168.137.128:8983/solr/)')
一直以来,这只是一个论点。如果我实际传递了参数,它将被存储为数组,并且需要通过args.solr [0]访问它。但是,如果我不向其传递任何参数,则将使用默认值,但是它将存储为字符串,因此args.solr [0]将为'h'。
是什么赋予了?我尝试过使用nargs,但是即使将其设置为1似乎也没有任何改变。
提前致谢
由于您的参数被标记(名称以开头-
),所以您不需要设置nargs
它-使用它的默认值None
。除非使用标志字符串,否则它是可选的(不是必需的)。
parser.add_argument('--solr', default='http://localhost:8983/solr/',
help='Address of Solr server (ex: %(default)s)')
这样,样本输入将产生:
In [51]: parser.parse_args([])
Out[51]: Namespace(solr='http://localhost:8983/solr/')
In [52]: parser.parse_args(['--solr','test'])
Out[52]: Namespace(solr='test')
In [50]: parser.print_help()
usage: ipython [-h] [--solr SOLR]
optional arguments:
-h, --help show this help message and exit
--solr SOLR Address of Solr server (ex: http://localhost:8983/solr/)
如果可选名称较长,则a--
优于-
。默认类型为str
,因此您无需指定。我已经添加%(default)s
了帮助,因此您不必重复默认值。
如果您确实希望结果为列表,例如['test']
,请使用nargs=1
,并将默认值也放置在列表中,例如default=['http...']
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句