亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python獲取中國節(jié)假日數(shù)據(jù)記錄入JSON文件

 更新時(shí)間:2025年04月04日 15:53:02   作者:DriverWon  
項(xiàng)目系統(tǒng)內(nèi)置的日歷應(yīng)用為了提升用戶體驗(yàn),特別設(shè)置了在調(diào)休日期顯示“休”的UI圖標(biāo)功能,那么問題是這些調(diào)休數(shù)據(jù)從哪里來呢?我嘗試一種更為智能的方法:Python獲取中國節(jié)假日數(shù)據(jù)記錄入JSON文件

項(xiàng)目系統(tǒng)內(nèi)置的日歷應(yīng)用為了提升用戶體驗(yàn),特別設(shè)置了在調(diào)休日期顯示“休”的UI圖標(biāo)功能。那么問題是這些調(diào)休數(shù)據(jù)從哪里來呢?

開發(fā)盆友首先訪問政府官網(wǎng),查閱并記錄下年度的節(jié)假日及調(diào)休安排,再錄入數(shù)據(jù)庫。作為追求效率與自動(dòng)化的我(懶),并不認(rèn)可這種“可愛”的方式。

我嘗試一種更為智能的方法:Python獲取中國節(jié)假日數(shù)據(jù)記錄入JSON文件。

節(jié)假日數(shù)據(jù)獲取

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

requests請(qǐng)求即可

import requests

year = 2024
url = f'https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{year}.json'  # 網(wǎng)址
res = requests.get(url=url, timeout=10)  # 發(fā)送請(qǐng)求
print(res.json())

運(yùn)行結(jié)果:

Python獲取中國節(jié)假日數(shù)據(jù)_JSON

存入JSON文件

tinydb創(chuàng)建JSON文件,插入獲取到的數(shù)據(jù)

from tinydb import TinyDB


if res.status_code == 200:  # 校驗(yàn)是否返回?cái)?shù)據(jù)
    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:  # 創(chuàng)建/打開tinydb
        db.truncate()  # 清空數(shù)據(jù)
        db.insert({'year': y, 'days': d, 'papers': p})  # 插入數(shù)據(jù)

運(yùn)行結(jié)果:

Python獲取中國節(jié)假日數(shù)據(jù)_JSON_02

節(jié)假日數(shù)據(jù)讀取

保存的節(jié)假日數(shù)據(jù)是以年份為名稱的不同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__)))]  # 遍歷當(dāng)前文件夾
json_file_list = [os.path.splitext(f)[0] for f in files[0]]  # 分割文件名
if str(year) in json_file_list:  # 校驗(yàn)是否存在年份數(shù)據(jù)
    with TinyDB(f"{year}.json") as db:  # 打開tinydb
        print(db.all())  # 獲取所有數(shù)據(jù)
else:
    print(f'{year}年數(shù)據(jù)不存在')

運(yùn)行結(jié)果:

Python獲取中國節(jié)假日數(shù)據(jù)_班休_03

封裝完整代碼

import os
import traceback
import requests
from tinydb import TinyDB


class ChineseHoliday:
    """
    中國節(jié)假日獲取
    """

    @staticmethod
    def download(year):
        """
        獲取并保存節(jié)假日json數(shù)據(jù)
        獲取地址來源:https://github.com/NateScarlet/holiday-cn
        :return:
        """
        try:
            url = f'https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{year}.json'  # 網(wǎng)址
            res = requests.get(url=url, timeout=10)  # 發(fā)送請(qǐng)求
            # print(res.json())
            if res.status_code == 200:  # 校驗(yàn)是否返回?cái)?shù)據(jù)
                y = res.json().get('year')
                d = res.json().get('days')
                p = res.json().get('papers')
                with TinyDB(f'{year}.json') as db:  # 創(chuàng)建/打開tinydb
                    db.truncate()  # 清空數(shù)據(jù)
                    db.insert({'year': y, 'days': d, 'papers': p})  # 插入數(shù)據(jù)
        except Exception as e:
            info = f"出了點(diǎn)小問題!\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__)))]  # 遍歷當(dāng)前文件夾
        json_file_list = [os.path.splitext(f)[0] for f in files[0]]  # 分割文件名
        if str(year) in json_file_list:  # 校驗(yàn)是否存在年份數(shù)據(jù)
            with TinyDB(f"{year}.json") as db:  # 打開tinydb
                return db.all()  # 獲取所有數(shù)據(jù)
        return

到此這篇關(guān)于Python獲取中國節(jié)假日數(shù)據(jù)記錄入JSON文件的文章就介紹到這了,更多相關(guān)Python獲取中國節(jié)假日數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中l(wèi)ogging日志庫實(shí)例詳解

    Python中l(wèi)ogging日志庫實(shí)例詳解

    這篇文章主要介紹了Python常用庫logging日志庫的實(shí)例代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 使用Python實(shí)現(xiàn)為PDF文檔設(shè)置背景色或背景圖

    使用Python實(shí)現(xiàn)為PDF文檔設(shè)置背景色或背景圖

    PDF作為一種跨平臺(tái)、高保真的文件格式被廣泛應(yīng)用,這篇文章主要為大家詳細(xì)介紹了如何使用Python代碼對(duì)PDF文檔進(jìn)行頁面背景色或背景圖片的設(shè)置,需要的可以參考下
    2024-04-04
  • 基于Python實(shí)現(xiàn)復(fù)刻人生重開模擬器

    基于Python實(shí)現(xiàn)復(fù)刻人生重開模擬器

    人生重開模擬器是由VickScarlet上傳至GitHub的一款簡單的文字網(wǎng)頁游戲。本文將用Python復(fù)刻一下這個(gè)游戲,感興趣的小伙伴可以嘗試一下
    2022-10-10
  • python中字符串變二維數(shù)組的實(shí)例講解

    python中字符串變二維數(shù)組的實(shí)例講解

    下面小編就為大家分享一篇python中字符串變二維數(shù)組的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python繪制分段函數(shù)的實(shí)現(xiàn)示例

    Python繪制分段函數(shù)的實(shí)現(xiàn)示例

    本文主要介紹了Python繪制分段函數(shù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python使用flask作為web服務(wù)器的代碼實(shí)現(xiàn)

    Python使用flask作為web服務(wù)器的代碼實(shí)現(xiàn)

    Python Flask 框架是一個(gè)輕量級(jí)的 Web 框架,它簡單易用,靈活多變,非常適合用于構(gòu)建小型到中型規(guī)模的 Web 應(yīng)用程序,本文給大家介紹了Python使用flask作為web服務(wù)器的代碼實(shí)現(xiàn),需要的朋友可以參考下
    2024-06-06
  • 從頭學(xué)Python之編寫可執(zhí)行的.py文件

    從頭學(xué)Python之編寫可執(zhí)行的.py文件

    這篇文章主要介紹了從頭學(xué)Python之編寫可執(zhí)行的.py文件,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • python中zip函數(shù)用法詳解(全)

    python中zip函數(shù)用法詳解(全)

    這篇文章主要給大家介紹了關(guān)于python中zip函數(shù)用法詳解的相關(guān)資料,zip()是Python的一個(gè)內(nèi)建函數(shù),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • Python?Requests?基本使用及Requests與?urllib?區(qū)別

    Python?Requests?基本使用及Requests與?urllib?區(qū)別

    在使用Python爬蟲時(shí),需要模擬發(fā)起網(wǎng)絡(luò)請(qǐng)求,主要用到的庫有requests庫和python內(nèi)置的urllib庫,一般建議使用requests,它是對(duì)urllib的再次封裝,今天通過本文給大家講解Python?Requests使用及urllib區(qū)別,感興趣的朋友一起看看吧
    2022-11-11
  • selenium+python實(shí)現(xiàn)自動(dòng)化登錄的方法

    selenium+python實(shí)現(xiàn)自動(dòng)化登錄的方法

    這篇文章主要介紹了selenium+python實(shí)現(xiàn)自動(dòng)化登錄的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09

最新評(píng)論