Python获取中国节假日数据记录入JSON文件

2025-04-05 15:50

本文主要是介绍Python获取中国节假日数据记录入JSON文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P...

项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能。那么问题是这些调休数据从哪里来呢?

开发盆友首先访问政府官网,查阅并记录下年度的节假日及调休安排,再录入数据库。作为追求效率与自动化的我(懒),并不认可这种“可爱&China编程rdquo;的方式。

我尝试一种更为智能的方法:python获取中国节假日数据记录入JSON文件。

节假日数据获取

获取地址:https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/年份.json

requests请求即可

import requests

year = 2024
url = fandroid'https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{year}.json'  # 网址
res = requests.get(url=url, timeout=10)  # 发送请求
print(res.json())

运行结果:

Python获取中国节假日数据记录入JSON文件

存入JSON文件

tinydb创建JSON文件,插入获取到的数据

from tinydb import TinyDB


if res.status_code == 200:  # 校验是否返回数据
    res_data = res.json()
    y = res_data.get('year')
    d = res_data.get('days')
    p = res_data.get('papers')
    with TinyDB(f'{year}.json') as db:  # 创建/打开tinydb
        db.truncate()  # 清空数据
        db.insert({'year': y, 'days': d, 'papers': p})  # 插入数据

运行结果:

Python获取中国节假日数据记录入JSON文件

节假日数据读取

保存的节假日数据是以年份为名称的不同JSON文件,使用tinydb读取即可

import os
from tinydb import TinyDB

year = 2022
files = [files for root, dirs, files in os.walk(os.path.dirname(os.path.abspath(__file__)))]  # 遍历当前文件夹
json_file_list = [os.path.splitext(f)[0] for f in files[0]]  # 分割文件名
if str(year) in json_file_list:  # 校验是否存在年份数据
    with TinyDB(f"{year}.json") as db:  # 打开tinydb
        print(db.all())  # 获取所有数据
else:
    print(f'{year}年数据不存在')

运行结果:

Python获取中国节假日数据记录入JSON文件

封装完整代码

import os
import traceback
import requests
fandroidrom tinyd编程China编程b import TinyDB


class ChineseHoliday:
    """
    中国节假日获取
    """

    @staticmethod
    def download(year):
        """
        获取并保存节假日json数据
        获取地址来源:https://github.com/NateScarlet/holiday-cn
        :return:
        """
        try:
            url = f'https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{year}.json'  # 网址
            res = requests.get(url=url, timeout=10)  # 发送请求
 www.chinasem.cn           # print(res.json())
            if res.status_code == 200:  # 校验是否返回数据
                y = res.json().get('year')
                d = res.json().get('days')
                p = res.json().get('papers')
                with TinyDB(f'{year}.json') as db:  # 创建/打开tinydb
                    db.truncate()  # 清空数据
                    db.insert({'year': y, 'days': d, 'papers': p})  # 插入数据
        except Exception as e:
            info = f"出了点小问题!\n{repr(e)}\n{traceback.format_exc()}"
            print(info)

    @staticmethod
    def get(year):
        files = [files for root, dirs, files in os.walk(os.path.dirname(os.path.abspath(__file__)))]  # 遍历当前文件夹
        json_file_list = [os.path.splitext(f)[0] for f in files[0]]  # 分割文件名
        if str(year) in json_file_list:  # 校验是否存在年份数据
            with TinyDB(f"{year}.json") as db:  # 打开tinydb
                return db.all()  # 获取所有数据
        return

到此这篇关于Python获取中国节假日数据记录入JSON文件的文章就介绍到这了,更多相关Python获取中国节假日数据内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于Python获取中国节假日数据记录入JSON文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154104

相关文章

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

Python中4大日志记录库比较的终极PK

《Python中4大日志记录库比较的终极PK》日志记录框架是一种工具,可帮助您标准化应用程序中的日志记录过程,:本文主要介绍Python中4大日志记录库比较的相关资料,文中通过代码介绍的非常详细,... 目录一、logging库1、优点2、缺点二、LogAid库三、Loguru库四、Structlogphp

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav