方法一:argparse解析
#!/usr/bin/env python3 # -*- coding:utf-8 -*- # @Time: 2020/5/20 10:38 # @Author:zhangmingda # @File: argparse_test.py # @Software: PyCharm # Description: import argparse parser = argparse.ArgumentParser("指定監聽端口") parser.add_argument('-p', '--port', default=80) args = parser.parse_args() print("獲取命令行傳參") port = args.port print("port=",port)
方法二: getopt 模塊解析,可以自定義錯誤提示
格式為:getopt.getopt(argv, options[, long_options])
argv為命令傳入的參數列表,也就是sys.argv[1:]
該方法有兩種傳參形式:短 ('-') 和長 ('--')
options表示的是短選項,傳入時需用(例如 :-f )形式傳入參數,其中,有冒號(:) 表示 -f 之后必須傳入值構成(例如:-f value),沒有冒號則不用。
[, long_options]表示的是長選項,傳入時需用(例如 :--f )形式傳入參數,其中,有等於號(=) 表示 --f 之后必須傳入值構成(例如:--f=value),沒有等於號則不用。
使用時可以長短混合,比如多個參數,有的用長選項,有的用短選項;在程序中設置默認值之后,還可以不用傳全部參數
示例:
#!/usr/bin/env python3 # -*- coding:utf-8 -*- # @Time: 2020/5/19 18:12 # @Author:zhangmingda # @File: getopt_test.py # @Software: PyCharm # Description: import getopt import sys def get_args_func(argv): port = '80' # 默認值 try: opts, args = getopt.getopt(argv, "hp::", ["help", "port="]) # 表示參數選項有:-h/ --help -p/ --port, # 它們相互對應;該方法的返回值有兩個元素: 第一個是(opt, value)元組的列表,第二個是一般參數列表,包含那些沒有 '-' 或 '--' 的參數 except getopt.GetoptError: # 獲取到非指定的- 或者長選項--的參數給出正確提示 print('GetoptError: python %s -p <port> ' % sys.argv[0]) print(' GetoptError: python %s --port=<port>' % sys.argv[0] ) sys.exit(2) for opt, value in opts: # 依次獲取列表中的元組項 if opt in ("-h", "--help"): print(' USAGE: %s -p <port> ') print('or: %s --port=<port>') sys.exit(0) elif opt in ('-p','--port'): port = value print('-----------------------------------------------------------------------') print("get option -p or --port:",port) print("get other option ",args) if __name__ == '__main__': get_args_func(sys.argv[1:]) # 因為sys.argv[0]是腳本名稱,從第一位獲取到最后