可选参数中 argparse 的问题
Problems on argparse in optional arguments
简单但困扰我很久的问题。我有以下命令行情况需要处理:
program.py
program.py foo
program.py anyotherstring
这些是我必须在命令行中处理的 3 种情况,我将在下面的 if 语句中将它们用作 bool。第一种只是程序本身,第二种情况后面的字符串必须是 'foo',第三种 'anyotherstring' 只是指除 'foo' 之外的任何其他字符串。我对 argparse 的文档感到困惑,无法找到实现它的方法。谁能给出解决方案?
感谢您的回答!
你可以这样尝试:
import argparse
parser = argparse.ArgumentParser(usage="-h for full usage")
parser.add_argument('query', nargs='?')
args = parser.parse_args()
if not args.query:
print 'no arguments'
elif args.query == 'foo':
print 'foo argument'
else:
print 'random string'
您可以尝试 docopt
:
而不是使用 argparse
"""optargs - testing optional arguments
Usage:
optargs
optargs foo
optargs <somestring>
"""
if __name__ == "__main__":
from docopt import docopt
args = docopt(__doc__)
print args
可以寻求帮助的人:
$ python optargs.py -h
optargs - testing optional arguments
Usage:
optargs
optargs foo
optargs <somestring>
然后,不带任何参数地调用它:
$ python optargs.py
{'<somestring>': None,
'foo': False}
然后使用参数 foo
(您将 "foo"
键设置为 True
):
$ python optargs.py foo
{'<somestring>': None,
'foo': True}
最后使用任意字符串(您将 "<somestring>"
键设置为 "somstring"
:
$ python optargs.py somstring
{'<somestring>': 'somstring',
'foo': False}
简单但困扰我很久的问题。我有以下命令行情况需要处理:
program.py
program.py foo
program.py anyotherstring
这些是我必须在命令行中处理的 3 种情况,我将在下面的 if 语句中将它们用作 bool。第一种只是程序本身,第二种情况后面的字符串必须是 'foo',第三种 'anyotherstring' 只是指除 'foo' 之外的任何其他字符串。我对 argparse 的文档感到困惑,无法找到实现它的方法。谁能给出解决方案?
感谢您的回答!
你可以这样尝试:
import argparse
parser = argparse.ArgumentParser(usage="-h for full usage")
parser.add_argument('query', nargs='?')
args = parser.parse_args()
if not args.query:
print 'no arguments'
elif args.query == 'foo':
print 'foo argument'
else:
print 'random string'
您可以尝试 docopt
:
argparse
"""optargs - testing optional arguments
Usage:
optargs
optargs foo
optargs <somestring>
"""
if __name__ == "__main__":
from docopt import docopt
args = docopt(__doc__)
print args
可以寻求帮助的人:
$ python optargs.py -h
optargs - testing optional arguments
Usage:
optargs
optargs foo
optargs <somestring>
然后,不带任何参数地调用它:
$ python optargs.py
{'<somestring>': None,
'foo': False}
然后使用参数 foo
(您将 "foo"
键设置为 True
):
$ python optargs.py foo
{'<somestring>': None,
'foo': True}
最后使用任意字符串(您将 "<somestring>"
键设置为 "somstring"
:
$ python optargs.py somstring
{'<somestring>': 'somstring',
'foo': False}