想法:我试图编写一个程序,在使用命令行参数后,它会将参数发送到数据库。有4个参数 - username
,email
,address
和version
。 除 username
之外的所有参数都必须是强制性的。
到目前为止我已经完成了什么: 我的代码:
parser = argparse.ArgumentParser()
parser.add_argument("-u", "--username", nargs = '?' , help="Insert your username", action="store_true")
parser.add_argument("uName", help="Insert your username", type=str)
parser.add_argument("-e", "--email", help="Insert your email", action="store_true")
parser.add_argument("eMail", help="Insert your email", type=str)
parser.add_argument("-a", "--address", help="Insert your address", action="store_true")
parser.add_argument("address", help="Insert your address", type=str)
parser.add_argument("-v", "--version", help="Insert your app version", action="store_true")
parser.add_argument("ver", help="Insert your app version", type=str)
args = parser.parse_args()
因此,如果我使用所有参数编写cmd:
$python test.py -u tom -e tom@company.com -a 45xx -v 1.1
它给了我正确的输出。没问题。
现在,如果我写cmd而留下一个参数:
$python test.py -u tom -e tom@company.com -a 45xx
它给了我错误:
usage: test.py [-h] [-u] [-e] [-b] [-a]
uName eMail aadress ver
test.py: error: the folowing arguments are required: ver
我理解的方式是,在我的代码中,所有这些都是位置参数,需要出现在输入中,在我的例子中,所有的"可选"参数需要一个位置参数来保存输入。是否有可能使输入中不需要的username
参数,因为在这种情况下我理解它的方式不是,如果这是真的,你能建议任何替代方法吗?我想也许有办法让username
给予" Null"如果它不在输入中但我无法找到方法。