2017-09-17 47 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]

雖然你可能想做一些錯誤檢查。