Arparse中的位置参数

时间:2018-09-11 17:53:57

标签: python-3.x

我有以下代码正好包含三个参数。用户需要提供所有三个参数。这是运行脚本时需要在命令行中提供的参数顺序。     浏览器     用户名     密码。

程序名称Argparse.py

import argparse
import sys
from collections import OrderedDict
parser = argparse.ArgumentParser()
parser.add_argument('browser', default='chrome', help='This is the browser type, browser type:chrome,'
                    'firefox or ie')
parser.add_argument('username', help='This is the  username')
parser.add_argument('password', help='This is the  password')
args = parser.parse_args()
parser.print_help()
print(args.browser)
browsers = ['chrome', 'firefox', 'ie']
if args.browser not in browsers:
    print("invalid browser")

如果用户忘记指定浏览器参数,而仅使用两个参数(用户名和密码)运行脚本,则脚本应引发错误,提示缺少浏览器参数,但在我的情况下,脚本引发错误,提示密码丢失。如何指定第一个位置应始终为浏览器类型>

Output :

    C:\>python Argparse.py user pass

    usage: Argparse.py [-h] browser username password
    Argparse.py: error: the following arguments are required: password

任何建议都会有所帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

您可能需要告诉parser,第一个参数browser是可选的(用---前缀表示),否则它期望第一个必需的位置参数成为browser参数。

通过为browser-加上前缀来使--为可选:

parser.add_argument('-b', '--browser', default='chrome', help='This is the browser type, browser type:chrome,'
                    'firefox or ie')

运行:

$ python Argparse.py user pass
chrome
user
pass