python獲取命令行傳參的兩種種常用方法argparse解析getopt 模塊解析


方法一: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]是腳本名稱,從第一位獲取到最后

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM