我似乎不知道如何调用脚本中的add_user()
函数并将所需的所有参数传递给它。如果我这么做
if args.adduser:
add_user(username, account, groups)
它找不到adduser
Namespace
。在
但是,如果我加上这个
parser_adduser.set_defaults(func=add_user)
它似乎执行add_user()
函数,但不向它传递任何参数。在
def parse_args():
helptext = 'Script to Add, Delete, Update AWS Users'
parser = argparse.ArgumentParser(description=helptext,
prog='aws-IAM-user.py',
usage='%(prog)s [position] [-u] [optional]',
conflict_handler='resolve',)
parser.add_argument('-v', '--version',
dest='version')
subparsers = parser.add_subparsers(title='Main commands',
help='MORE INFO: [COMMAND] -help')
parent_parser = argparse.ArgumentParser(add_help=False)
parent_parser.add_argument('-u', '--username',
dest='username',
action='store',
help='list a single user or multiple users, '
'seperated by space',
nargs='+',
required=True)
parent_parser.add_argument('-a', '--account',
dest='account',
action='store',
nargs='+',
help='Specify Account(s).'
' Default is to use all available')
# 'Add User Parsers'
parser_adduser = subparsers.add_parser('adduser',
parents=[parent_parser],
help='adduser -u USER -a ACCOUNT -g GROUP.'
' Passwords are auto-gen')
parser_adduser.add_argument('-g', '--group',
dest='groups',
nargs='+',
help='specify group(s) seperated by space')
parser_adduser.set_defaults(func=add_user)
return parser.parse_args()
if __name__ == '__main__':
args = parse_args()
config = ConfigParser.RawConfigParser()
config.read(AWS_CONFIG_FILE)
username = args.username
account = args.account
我不知道我是不是太傻了,但我似乎不知道如何使用adduser
调用脚本,并在使用我非常想使用的subparser
功能时传递所有标志。在
我想你误解了增加一个次级罪犯意味着什么。添加子parser时,如果在命令行中选择了subparser,则该子parser的参数将添加到命名空间中。然后,与命令行交互的标准方法是为每个接受args名称空间作为参数的子parser创建一个入口点。e、 假设你想要一个
adduser
和一个removeuser
子parser。他们可能会做一些类似的事情:相关问题 更多 >
编程相关推荐