当前位置: 首页 > 面试题库 >

使用argparse获取选定的子命令

常波
2023-03-14
问题内容

当我将子命令与python argparse一起使用时,可以获得所选的参数。

parser = argparse.ArgumentParser()
parser.add_argument('-g', '--global')
subparsers = parser.add_subparsers()   
foo_parser = subparsers.add_parser('foo')
foo_parser.add_argument('-c', '--count')
bar_parser = subparsers.add_parser('bar')
args = parser.parse_args(['-g, 'xyz', 'foo', '--count', '42'])
# args => Namespace(global='xyz', count='42')

因此args不包含'foo'sys.argv[1]由于可能存在全局arg,因此简单地编写不起作用。如何获得子命令本身?


问题答案:

关于argparse子命令的Python文档的最底层介绍了如何执行此操作:

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-g', '--global')
>>> subparsers = parser.add_subparsers(dest="subparser_name") # this line changed
>>> foo_parser = subparsers.add_parser('foo')
>>> foo_parser.add_argument('-c', '--count')
>>> bar_parser = subparsers.add_parser('bar')
>>> args = parser.parse_args(['-g', 'xyz', 'foo', '--count', '42'])
>>> args
Namespace(count='42', global='xyz', subparser_name='foo')

您也可以使用set_defaults()我发现的示例上方引用的方法。



 类似资料:
  • 根据以下示例HTML查找元素下面的元素:

  • 问题内容: 我有一个这样的下拉列表: 如何使用JavaScript获取实际的选项文本而不是值?我可以通过以下方式获得价值: 但不是我想要的。 问题答案: 尝试选项

  • 问题内容: 我有以下代码(使用Python 2.7): 现在,我希望能够调用此程序,例如在普通程序或某些子命令后附加: 基本上,我需要声明可选的子解析器。我知道这并不是真正支持的方法,但是有任何解决方法或替代方法吗? 编辑:我得到的错误信息: 问题答案: 根据文档,带有(而不带有)的会自动打印版本号:

  • 问题内容: 我正在实现一个命令行程序,其界面如下: 我已经阅读了argparse文档。我可以使用in实现为可选参数。以及using子命令。 从文档看来,我只能有一个子命令。但是如您所见,我必须实现一个或多个子命令。解析此类命令行参数使用的最佳方法是什么? 问题答案: @mgilson对这个问题有很好的答案。但是我自己拆分sys.argv的问题是我丢失了Argparse为用户生成的所有有用的帮助消息

  • 问题内容: 我有我的选择列表组件呈现我的选择列表: 我在组件上有一个方法可以创建选项: 我的onChange方法适用于以下值: 有没有办法我可以获取选项文本?这给我不确定 问题答案: 这样的事情应该做 这是一个演示 http://jsbin.com/vumune/4/

  • 建立一个解析器 import argparse parser = argparse.ArgumentParser( description='This is a PyMOTW sample program', ) 简单示例 # argparse_short.py import argparse parser = argparse.ArgumentParser(description='