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中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰