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

Python Command Line Arguments to Variables and Input Validation

本问题已经有最佳答案,请猛点这里访问。

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

python文件.py 192.168.1.48 8080

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

用法:python file.py(IP地址)(端口)

到目前为止,这是我的代码。到目前为止,我还没有成功地获得要正确处理的参数。请注意,这只是概念的证明。我正试图让这个工作来开发另一个脚本。我希望命令行参数用用户的输入填充下面的IP和端口变量,并尽可能将输入验证为IP变量的IP地址和端口的整数。非常感谢您的帮助:

1
2
3
4
5
6
7
8
9
10
11
12
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)

我使用GETOPT。还有一个叫做argparse的库

此代码来自getopt的文档:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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〕端口=系统参数[2]

不过,您可能需要进行一些错误检查。