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中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图