【发布时间】:2016-02-08 00:59:45
【问题描述】:
嘿,所以我正在使用 argparse 来尝试生成季度报告。代码是这样的:
parser = argparse.ArgumentParser()
parser.add_argument('-q', "--quarter", action='store_true', type=int, help="Enter a Quarter number: 1,2,3, or 4 ")
parser.add_argument('-y', "--year", action='store_true',type=str,help="Enter a year in the format YYYY ")
args = parser.parse_args()
我收到的错误是:
TypeError: init() 得到了一个意外的关键字参数 'type'
据我所知,argparse 文档类型是 add_argument 函数的参数之一。我尝试删除它并将代码更新为:
parser = argparse.ArgumentParser()
parser.add_argument('-q', "--quarter", action='store_true', help="Enter a Quarter number: 1,2,3, or 4 ")
parser.add_argument('-y', "--year", action='store_true',help="Enter a year in the format YYYY ")
args = parser.parse_args()
然后我尝试使用:python scriptname.py -q 1 -y 2015 运行它,它给了我以下错误:
错误:无法识别的参数:1 2015
我也不知道为什么。任何人都可以对此有所了解。
【问题讨论】:
-
请重新格式化该代码,它很难阅读 - 每行前 4 个字符将使其成为一个代码块。
-
你为什么使用
action='store_true'?您对这样做的理解是什么? -
稍后在代码中我会检查存储在 argparse 中的变量是否为真。如果他们是我执行一些代码。
-
这根本不是
store_true的工作原理,甚至真相在 Python 中的工作原理。 -
store_true的目的是为命名变量保存值True。为同一选项指定type值是没有意义的,也是不允许的。