【发布时间】:2017-08-20 20:50:31
【问题描述】:
我已经阅读了argparsedocs,我正在尝试制作一个程序,它接受命令行参数并将这些值传递给如下变量:
ssh.py -username admin -password password -hostlist 192.168.1.1, 192.168.1.2 -commands uname -a, whoami
当我在我的程序中静态分配这些值时,它可以工作,但是无论目标是列表还是单个字符串,我都无法让 argpase 将字符串传递给变量。
这行得通:
hostlist = ['192.168.1.1','192.168.1.2']
username = 'admin'
password = 'password'
commands = ['uname -a','whoami']
这会静默运行,不工作或产生错误或写入日志文件:
parser = argparse.ArgumentParser()
parser.add_argument('-u', '-username', help='The Username for authentication.')
parser.add_argument('-p', '-password', help='The password for authentication.')
parser.add_argument('-l', '-hostlist', nargs='+', help='List of devices to interact with.')
parser.add_argument('-c', '-commands', nargs='+', help='An exact list of commands to run')
args = parser.parse_args()
u,username = args.username
p,password = args.password
l,hostlist = args.hostlist
c,commands = args.commands
【问题讨论】:
-
我预计
u,username = args.username会引发unpacking错误。args.username应该是None或单个字符串。但是您提供了 2 个要填充的变量,u和username。感觉就像您在使用基本 Python 时遇到问题,而不仅仅是argparse。
标签: python python-3.x list argparse