命令行參數可以提升腳本的靈活性,更加通用。完成參數解析一般用到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)