简单但问题困扰我很长一段时间。我有以下命令行情况来处理:
program.py
program.py foo
program.py anyotherstring
这是我必须在命令行中处理的3种情况,我将在下面的if语句中将它们用作bool。第一个只是程序本身,第二个情况是以下字符串必须是' foo'确切地说,第三个' anyotherstring'只是表示除了“foo”之外的任何其他字符串。我对argparse的文档感到困惑,无法找到实现它的方法。任何人都可以为此提供解决方案吗?
感谢您的回答!
答案 0 :(得分:1)
你可以这样尝试这样做:
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'
答案 1 :(得分:0)
您可以尝试argparse
:
docopt
"""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}