需要简单的 argparse 示例:1 个参数,3 个结果

新手上路,请多包涵

argparse python 模块文档 虽然我敢肯定,但对于我小小的初学者大脑来说,现在掌握的内容太多了。我不需要在命令行上进行数学运算,也不需要干预屏幕上的格式行或更改选项字符。我想要做的就是 “如果 arg 是 A,则执行此操作,如果 B 执行此操作,如果以上都没有显示帮助并退出”

原文由 matt wilkie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 457
2 个回答

我对原始问题的理解是双重的。首先,就最简单的 argparse 示例而言,我很惊讶我在这里没有看到它。当然,为了简单起见,这也是开销很小的开销,但它可能会让你开始。

 import argparse

parser = argparse.ArgumentParser()
parser.add_argument("a")
args = parser.parse_args()

if args.a == 'magic.name':
    print 'You nailed it!'

但是现在需要这个位置参数。如果你在调用这个程序时忽略它,你会得到一个关于缺少参数的错误。这使我进入原始问题的第二部分。 Matt Wilkie 似乎想要一个没有命名标签的 可选 参数( –option 标签)。我的建议是修改上面的代码如下:

 ...
parser.add_argument("a", nargs='?', default="check_string_for_empty")
...
if args.a == 'check_string_for_empty':
    print 'I can tell that no argument was given and I can deal with that here.'
elif args.a == 'magic.name':
    print 'You nailed it!'
else:
    print args.a

很可能有一个更优雅的解决方案,但这很有效并且是极简主义的。

原文由 mightypile 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是我使用 argparse 的方式(带有多个参数):

 parser = argparse.ArgumentParser(description='Description of your program')
parser.add_argument('-f','--foo', help='Description for foo argument', required=True)
parser.add_argument('-b','--bar', help='Description for bar argument', required=True)
args = vars(parser.parse_args())

args 将是一个包含参数的字典:

 if args['foo'] == 'Hello':
    # code here

if args['bar'] == 'World':
    # code here

在您的情况下,只需添加一个参数即可。

原文由 Diego Navarro 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题