我正在尝试使用命令行选项使用我的程序。这是我的代码:
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-u","--upgrade", help="fully automatized upgrade")
args = parser.parse_args()
if args.upgrade:
print "Starting with upgrade procedure"
main()
当我尝试从终端(python script.py -u
)运行我的程序时,我希望收到消息Starting with upgrade procedure
,但我收到错误消息unrecognized arguments -u
。
答案 0 :(得分:14)
您得到的错误是因为-u
预期会有一些值。如果您使用python script.py -h
,则会在使用声明中找到[-u UPGRADE]
。
如果要将其用作布尔值或标志(如果使用-u
,则为true),添加其他参数action
:
parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action="store_true")
action
- 在命令行遇到此参数时要采取的基本操作类型
使用action="store_true"
,如果指定了选项-u
,则将值True分配给args.upgrade
。不指定它意味着False。
答案 1 :(得分:3)
目前,您的参数也需要传入一个值。
如果您想要-u
作为选项,请使用action='store_true'
作为不需要值的参数。
示例 -
parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action='store_true')
答案 2 :(得分:3)
对于布尔参数,使用action =" store_true":
parser.add_argument("-u","--upgrade", help="fully automatized upgrade", action="store_true")
请参阅:https://docs.python.org/2/howto/argparse.html#introducing-optional-arguments