命令行参数解析模块argparse的使用
import argparse # 创建一个解析器对象 parser = argparse.ArgumentParser(description='示例') # 添加参数,指定 name 参数不能缺省 parser.add_argument('-N', '--name', type=str, help='姓名', required=True) parser.add_argument('--age', type=int, help='年龄') # 解析命令行参数 args = parser.parse_args() # 打印解析后的参数 print(f'你的名字是:{args.name},年龄是:{args.age}')
使用示例
python test.py --name eliwang --age 28
互斥组示例
def parse_crawl_scope(self): """ 解析命令行参数,确定爬取范围 :return: 'first_page' | 'all' | from_date (datetime.date) """ parser = argparse.ArgumentParser(description="东方财富网-公告爬虫") group = parser.add_mutually_exclusive_group() group.add_argument('--all', action='store_true', help='抓取全部数据') group.add_argument('--days', type=int, help='抓取最近N天') group.add_argument('--from', dest='from_date', type=str, help='从指定日期抓取,格式YYYY-MM-DD') args = parser.parse_args() if args.all: logger.info("[参数] 抓取全部数据") return 'all' elif args.days is not None: from_date = (datetime.now() - timedelta(days=args.days)).date() logger.info(f"[参数] 抓取最近{args.days}天, 从{from_date}起") return from_date elif args.from_date: try: from_date = datetime.strptime(args.from_date, '%Y-%m-%d').date() logger.info(f"[参数] 从指定日期抓取: {from_date}") return from_date except ValueError: logger.error("[参数] 日期格式错误,需 YYYY-MM-DD") sys.exit(1) else: logger.info("[参数] 默认抓取首页数据") return 'first_page'