Python解析命令行參數 - argparse

命令行參數可以提升腳本的靈活性,更加通用。完成參數解析一般用到getopt, optparse和argparse,其中argparse是Python3.2新推出的命令行參數解析模塊

argparse特性

  • 支持可選參數
  • 支持子命令
  • 支持重複參數個數統計
  • 更加友好的使用提示

整體使用樣例(看註釋)

import argparse
from datetime import datetime

parser = argparse.ArgumentParser()

# 必填參數
parser.add_argument("host", help="database host")
# 可選參數(`--`前綴)
parser.add_argument("--database", help="database name")
# 類型要求(type=int)
parser.add_argument("--port", help="database port", type=int, default=3306)


def valid_datetime(s):
    """
    自定義的日期時間校驗方法
    :param s:
    :return:
    """
    try:
        return datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
    except ValueError:
        msg = "Not a valid date: '{0}'.".format(s)
        raise argparse.ArgumentTypeError(msg)


# 指定類型校驗(type=valid_date):自定義的校驗方法valid_date
parser.add_argument("--begin", help="數據對賬的開始時間(含)", default=None, type=valid_datetime)
parser.add_argument("--end", help="數據對賬區間的結束時間(不含)", default=None, type=valid_datetime)

args = parser.parse_args()
print(args.host)
print(args)

必填參數

parser.add_argument("host", help="database host")
print(args)
  • 使用效果
python test.py localhost
Namespace(host='localhost')
  • 幫助文檔
usage: test.py [-h] host

positional arguments:
  host        database host

optional arguments:
  -h, --help  show this help message and exit

可選參數數(--前綴)

parser.add_argument("--database", help="database name")

特定類型(type=int

parser.add_argument("--port", help="database port", type=int, default=3306)

自定義類型

def valid_datetime(s):
    """
    自定義的日期時間校驗方法
    :param s:
    :return:
    """
    try:
        return datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
    except ValueError:
        msg = "Not a valid date: '{0}'.".format(s)
        raise argparse.ArgumentTypeError(msg)


# 指定類型校驗(type=valid_date):自定義的校驗方法valid_date
parser.add_argument("--begin", help="數據對賬的開始時間(含)", default=None, type=valid_datetime)
parser.add_argument("--end", help="數據對賬區間的結束時間(不含)", default=None, type=valid_datetime)

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章