python argsparse数据类型

nick_v1

我在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似乎也没有任何改变。

提前致谢

hpaulj

由于您的参数被标记(名称以开头-),所以您不需要设置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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章