Python命令行参数变量和输入验证

时间:2017-09-17 03:48:08

标签: python python-2.7

将命令行参数处理为变量的最佳方法是什么?我正在尝试使用python脚本函数,例如:

python file.py 192.168.1.48 8080

如果没有输入参数,则应打印以下内容 -

用法:python file.py(ip address)(port)

到目前为止,这是我的代码。我还没有成功地获得正确处理的论据。请注意,这仅仅是概念证明。我正在努力开发另一个脚本。我希望命令行参数用用户的输入填充下面的ip和port变量,并且如果可能的话,将输入验证为ip变量的IP地址和端口的整数。任何帮助都非常感谢:

import urllib2
import ssl
ip="192.168.1.48"
port="8080"



ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

urllib2.urlopen("https://{0}:{1}".format(ip, port), context=ctx)

1 个答案:

答案 0 :(得分:1)

我使用getopt。还有另一个名为argparse的库

此代码来自getopt:

的文档
import getopt, sys

def main():
    try:
         opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="])
    except getopt.GetoptError as err:
        # print help information and exit:
       print str(err)  # will print something like "option -a not recognized"
       usage()
       sys.exit(2)
    output = None
    verbose = False
    for o, a in opts:
        if o == "-v":
            verbose = True
        elif o in ("-h", "--help"):
           usage()
           sys.exit()
        elif o in ("-o", "--output"):
           output = a
        else:
            assert False, "unhandled option"
    # ...

    if __name__ == "__main__":
        main()

对于您的特定情况,您可以只导入sys并设置
       IP = sys.arv [1]        port = sys.argv [2]

你可能想要做一些错误检查。