一些 python argparse 使用问题:获取参数

1 投票
2 回答
754 浏览
提问于 2025-04-16 23:53

有一些问题我在看文档的时候没弄明白,还有一些其他的问题。

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_argargs.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

撰写回答