如何将argparser args的输入传递给另一个函数的参数?

时间:2014-05-24 10:24:30

标签: python function main argparse paramiko

我正在编写一个程序,它基本上登录到远程服务器(Linux)并执行一些命令。为此,我需要得到像"服务器IP","用户名"和"密码"等输入。从命令行。我正在使用argparse模块。我的代码看起来像这样:

import sys
import argparse
import getpass
import re
from time import gmtime, strftime

import paramiko
try:
    import interactive
except ImportError:
    from . import interactive

def do_connect(esxi):
        """Connect to host in the esxi host"""
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect()

if __name__ == '__main__':

    parser = argparse.ArgumentParser(description='DEV Installer App')
    parser.add_argument("--esxiIP", help="Mention the Esxi Host IP", required=True)
    parser.add_argument("--userName", help="Enter the UserName of the Host", required=True)
    parser.add_argument("--password", help="Enter the Password", required=True)
    args = parser.parse_args()

我在这里尝试做的是,我有一个连接到远程服务器的功能,并使用argparse函数中的main()获取输入。我需要将这些输入参数传递给do_connect函数。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:1)

args是一个Namespace实例对象,其中包含每个命令行参数的属性。参数基于选项开关,除非您明确地给它一个不同的名称。

在这种情况下,您将拥有args.esxiIPargs.userNameargs.password属性,然后您可以将这些属性传递给另一个函数。如果您的函数仅使用esxiIP参数,请将其传递给:

do_connect(args.esxiIP)

如果需要更多参数,请明确传递这些参数。

演示:

>>> args = parser.parse_args('--esxiIP 10.20.30.40 --userName foo --password bar'.split())
>>> args
Namespace(esxiIP='10.20.30.40', password='bar', userName='foo')
>>> args.esxiIP
'10.20.30.40'
>>> args.userName
'foo'
>>> args.password
'bar'