命令行参数解析模块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'

 

posted @ 2024-07-13 03:14  eliwang  阅读(28)  评论(0)    收藏  举报