一些 python argparse 使用问题:获取参数
有一些问题我在看文档的时候没弄明白,还有一些其他的问题。
1: 我一直搞不懂“我到底怎么获取参数”,于是我四处查找,有人建议用 __dict__
函数来像访问字典一样获取参数。这样确实可以,但这就是唯一的方法吗?这听起来是个挺常见的事情,但在文档里好像没什么明显的说明。如果我漏掉了,能不能请大家指点一下?文档里肯定没有在最前面。
2: argparse
是在 2.7 版本中引入的,但有些人就是不愿意更新到新版本的 Python,还是坚持用 2.5、2.6,原因我也不太清楚。为了应对这种情况,我的解决办法是把 argparse
模块放到我自己的脚本目录里。这样做会有什么问题吗?看起来是有效的。
2 个回答
3
广告 1:获取这些值其实很简单:
parser.add_argument('--some_arg', action='store')
parser.add_argument('--some_flag', action='store_true')
args = parser.parse_args()
现在你可以通过 args.some_arg
或 args.some_flag
来访问这些值,具体可以参考文档。
广告 2:因为在 Python 2.7 版本中引入了 argparse,很多人为了兼容旧版本,还是使用较老的 optparse
模块,因为这个模块可能在某些情况下不可用。它们的语法其实差不多。我的解决办法是先尝试用 argparse
来解析,如果不行再用 optparse
作为备用。
4
你可以使用 parse_args()
这个函数来获取参数。例如:
parser = argparse.ArgumentParser(description="Test")
parser.add_argument('command')
parameters = parser.parse_args()
cmd = parameters.command
关于你第二个问题,不建议你这样做。仅仅添加这个模块是不够的,因为你可能会遇到依赖问题(也就是说,argparse 这个模块内部可能需要其他东西,而这些东西在 2.7 版本中才有)。这个模块的旧版本,虽然已经不推荐使用了,可以参考 optparse。