Python argparse
2023-04-18 12:35:24 时间
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)
相关文章
- 计算机组成原理:计算机的层次与编程语言
- 为什么「暗色模式」不应采用纯黑背景?这是谷歌的理由
- 谷歌正式推送Android 10.0正式版!
- Flutter与React Native针对移动开发的比较
- 更像iOS了?Android 10够猛 这波升级来感受下
- 全面了解B端产品设计:如何理解需求?
- 苹果屏蔽第三方电池,是真心为了用户考虑,还是霸道营销?
- 5G消息服务入口在哪,你可能想不到
- 不要对折叠屏iPhone和iPad期待过早
- 为什么你的语音助手说话不像人?关于TTS技术原理及挑战
- 全面了解B端产品设计:基础扫盲篇
- 手机做到那几点才能完全取代PC?
- 外媒:若苹果想认真对待服务业务 iPhone就应降价
- 中国的移动互联网月活用户首次下降
- iOS 13 beta 5 发布 新功能与改变汇总
- SiriOS或将面世,助力苹果智能家居生态
- iPhone正式版系统更新,终于可以迁移数据了!
- 谷歌推Byteboard:以工作能力考核程序员面试者
- UI设计师如何正确的分析产品?来看这份全面的入门指南!
- 华为:安卓乃首选 鸿蒙用于物联网