2017-09-17 69 views
-2

将命令行参数处理为变量的最佳方式是什么?我想有一个python脚本的功能,如本:Python命令行变量和输入验证的参数

蟒蛇file.py 192.168.1.48 8080

如果没有输入参数,它应该打印以下 -

用法:Python文件.py(ip地址)(端口)

到目前为止,这里是我的代码。至今我还没有成功获得正确处理的论据。请注意,这仅仅是概念证明。我试图让这个工作来开发另一个脚本。我希望命令行参数使用用户的输入填充下面的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

我使用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] 端口= sys.argv [2]

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