使用此参数:
def get_args(arglist):
parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter,
description=textwrap.dedent('''
text '''))
parser.add_argument('--add',
default='',
nargs='?',
choices=['user', 'database'],
help='Add user or database (default: %(default)s)')
args = parser.parse_args(arglist) # Passing argument list into parse
args_dict = vars(args) # Dictionary for args
return args, args_dict # Return the parsed arguments
我需要执行逻辑以读取做出了choice
的内容,并根据该选择沿着if语句的路径前进。
基本上,这就是我想要做的:
if args.add+args.user:
print(f"do something to add user {args.add}")
if args.add+args.database:
print(f"do something to add database {args.add}")
我希望此CLI脚本知道用户要添加的内容(目前为user
或database
)。
最终目标是用户将输入./myscript.py --add user USERNAME
来添加用户。
答案 0 :(得分:1)
只需比较存储在参数中的值以检查用户输入的内容:
df1
ID val
0 a 0.33
1 b 0.5
对于if args.add == 'user':
print(f"do something to add user {args.add}")
if args.add == 'database':
print(f"do something to add database {args.add}")
或USERNAME
部分
我现在想到的一个解决方案是再增加一个论点。它也可以是定位的或可选的。
位置:
MYDB
脚本调用:parser.add_argument('name',
default='',
help='USERNAME or DATABASE name to be added (default: %(default)s)')
或./myscript.py USERNAME --add user
可选:
./myscript.py MYDB --add database
脚本调用:parser.add_argument('--name',
default='',
help='USERNAME or DATABASE name to be added (default: %(default)s)')
或./myscript.py --add user --name USERNAME
答案 1 :(得分:0)
除了Hemerson的答案,您还可以创建一个subparser,其中的mutually exclusive group包含参数--database
和--user
。
这里是一个例子:
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='command')
add_command = subparsers.add_parser('add', help='Add database or user.')
add_group = add_command.add_mutually_exclusive_group(required=True)
add_group.add_argument('--database')
add_group.add_argument('--user')
args = parser.parse_args()
if args.command == 'add':
if args.user:
print('Adding user:', args.user)
if args.database:
print('Adding database:', args.database)
现在您可以致电:
./myscript.py add --database MYDB
./myscript.py add --user MYUSER
但不是:
./myscript.py add
./myscript.py add --database MYDB --user MYUSER