成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 用python自動(dòng)生成日歷

用python自動(dòng)生成日歷

熱門標(biāo)簽:浙江電銷卡外呼系統(tǒng)好用嗎 地圖標(biāo)注微信發(fā)送位置不顯示 315電話機(jī)器人廣告 蓋州市地圖標(biāo)注 南京銷售外呼系統(tǒng)軟件 房產(chǎn)電銷外呼系統(tǒng) 地圖制圖標(biāo)注位置改變是移位嗎 地圖標(biāo)注的意義點(diǎn) 上海機(jī)器人外呼系統(tǒng)哪家好

效果

在Excel日歷模板的基礎(chǔ)上,生成帶有農(nóng)歷日期、節(jié)假日、休班等信息的日歷,解決DIY日歷最大的技術(shù)難題。

圖中日期,第一行為公歷,第二行為節(jié)假日,第三行為農(nóng)歷,第四行是其他特別的日子,比如生日、紀(jì)念日等。

特點(diǎn)

  • 使用門檻低

Python + Excel,會(huì)運(yùn)行Python腳本,會(huì)使用Excel即可上手。

  • 步驟簡單

只需要修改Excel的年份(在一月份表頭修改),運(yùn)行一次腳本

  • 可擴(kuò)展

可制作任意年份的日歷(修改年份即可)

  • 可定制

可以添加其他特殊日期

使用手冊

第一步,修改日歷年份及樣式

打開calendar.xlsx文件,在一月份表頭,”輸入年份“位置,修改樣式

第二步,添加自定義日期

calendar.xlsx文件的生日欄,添加需要標(biāo)注的日期,并保存

第三部,運(yùn)行腳本

主要代碼

BdDataFetcher.py

#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import datetime
import logging
import time

import requests
import re
import json

class BdDataFetcher(object):
    def __init__(self):
        self.url = 'https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php'
        self.request_session = requests.session()
        self.request_session.headers = {
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36",
            "Accept": "application/json, text/plain, */*",
            "Accept-Encoding": "gzip, deflate",
            "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
            "Connection": "keep-alive"
        }

    def request(self, year_month):
        payload = {
            'query': year_month,
            'resource_id': 39043,
            't': int(round(time.time() * 1000)),
            'ie': 'utf8',
            'oe': 'utf8',
            'cb': 'op_aladdin_callback',
            'format': 'json',
            'tn': 'wisetpl',
            'cb': 'jQuery110206747607329442493_1606743811595',
            '_': 1606743811613
        }
        resp = self.request_session.get(url=self.url, params=payload)
        logging.debug('data fetcher resp = {}'.format(resp.text))
        bracket_pattern = re.compile(r'[(](.*?)[)]', re.S)
        valid_data = re.findall(bracket_pattern, resp.text)
        json_data = json.loads(valid_data[0])
        almanac = json_data['data'][0]['almanac']
        result = {}
        for day in almanac:
            key = '{}-{}-{}'.format(day['year'], day['month'],day['day'])
            result[key] = day
        return result
if __name__ == '__main__':
    logging.basicConfig(level=logging.DEBUG,
                        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                        datefmt='%a, %d %b %Y %H:%M:%S')
    BdDataFetcher().request('2021年1月')

ExcelDateFiller.py

#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import logging
import os
import sys
from copy import copy

import openpyxl
import pandas as pandas
import xlrd
import xlutils
import yaml
from pandas._libs.tslibs.timestamps import Timestamp

from BdDataFetcher import BdDataFetcher


class Config(object):
    def __init__(self, config_path):
        try:
            with open(config_path, "r", encoding="utf-8") as yaml_file:
                data = yaml.load(yaml_file)
                self.excel_path = data['excel_path']
                self.sheet_special = data['sheet_special']
                self.skip_row = data['date_skip_row']
                self.skip_col = data['date_skip_col']
                self.max_length = data['max_length']
                self.holiday_color = data['holiday_color']
                self.workday_color = data['workday_color']
                logging.basicConfig(level=logging.DEBUG,
                            format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                            datefmt='%a, %d %b %Y %H:%M:%S')

        except Exception as e:
            logging.error(repr(e))
            sys.exit()

class SpecialDay(object):
    def __init__(self):
        self.is_lunar = False
        self.desc = ''

class ExcelDateFiller(object):
    def __init__(self):
        self.data_fetcher = BdDataFetcher()
        self.target = os.path.splitext(config.excel_path)[0] + '_out' + os.path.splitext(config.excel_path)[-1]
        # try:
        #     shutil.copy(config.excel_path, self.target)
        # except IOError as e:
        #     print("Unable to copy file. %s" % e)
        # except:
        #     print("Unexpected error:", sys.exc_info())
        # self.target_workbook = openpyxl.load_workbook(self.target, data_only=True)

    def fill_date_with_openpyxl(self):
        for sheet in self.target_workbook.worksheets:
            for column_index in range(1, sheet.max_column):
                for row_index in range(1, sheet.max_row):
                    data = sheet.cell(column=column_index, row=row_index)
                    print(data.value)

    def read_with_xlrd(self):
        workbook = xlrd.open_workbook(self.target)
        for sheet in workbook.sheets():
            for column_index in range(0, sheet.ncols):
                for row_index in range(0, sheet.nrows):
                    data = sheet.cell(rowx=row_index, colx=column_index)
                    logging.debug('ctype = {}, value = {}, xf_index = {}'.format(data.ctype, data.value, data.xf_index))

    def write_with_openpyxl(self):
        target_workbook = openpyxl.load_workbook(self.target)
        sheet = target_workbook.get_sheet_by_name('sheet_name')
        sheet.cell(0, 0).value = 'value'
        target_workbook.save()

    def write_with_xlwt(self):
        workbook = xlrd.open_workbook(self.target)
        workbook = xlutils.copy(workbook)
        sheet = workbook.get_sheet(0)
        sheet.write(0, 0, 'value')
        workbook.save()

    def load_special_sheet(self):
        data = {}
        special_sheet = pandas.read_excel(config.excel_path, sheet_name=config.sheet_special, header=0)
        for row_index in range(special_sheet.shape[0]):
            key = special_sheet.iloc[row_index, 0]
            struct_time = pandas.to_datetime(key.timestamp(), unit='s').timetuple()
            key = '{}-{}'.format(struct_time.tm_mon, struct_time.tm_mday)
            value = SpecialDay()
            value.desc = special_sheet.iloc[row_index, 1]
            value.is_lunar = special_sheet.iloc[row_index, 2] == '是'
            data[key] = value
        return data


    def fill_date(self):
        pandas_workbook = pandas.read_excel(config.excel_path, sheet_name=None, skiprows= config.skip_row, keep_default_na=False)
        out_workbook = openpyxl.load_workbook(config.excel_path)

        special_day = self.load_special_sheet()

        day_data = {}
        for sheet_name in pandas_workbook.keys():
            if not sheet_name.endswith('月'):
                continue
            sheet = pandas_workbook.get(sheet_name)
            out_sheet = out_workbook.get_sheet_by_name(sheet_name)

            nrows = sheet.shape[0]
            ncols = sheet.shape[1]
            for row_index in range(nrows):
                for col_index in range(ncols):
                    data = sheet.iloc[row_index, col_index]
                    logging.debug('origin row = {}, col = {}, data = {}'.format(row_index, col_index, data))
                    if type(data) == Timestamp:
                        struct_time = pandas.to_datetime(data.timestamp(), unit='s').timetuple()
                        date = '{}-{}-{}'.format(struct_time.tm_year, struct_time.tm_mon, struct_time.tm_mday)
                        if not day_data.__contains__(date):
                            request_data = self.data_fetcher.request(year_month='{}年{}月'.format(struct_time.tm_year, struct_time.tm_mon))
                            day_data.update(request_data)

                        temp_row = row_index + 2 + config.skip_row
                        temp_col = col_index + 1
                         # weekend color
                        if day_data[date]['cnDay'] == '六' or day_data[date]['cnDay'] == '日':
                            holiday_font = copy(out_sheet.cell(temp_row, temp_col).font)
                            holiday_font.color = config.holiday_color
                            out_sheet.cell(temp_row, temp_col).font = holiday_font
                        # holiday color
                        if day_data[date].__contains__('status'):
                            if day_data[date]['status'] == '1': # 休假
                                holiday_font = copy(out_sheet.cell(temp_row, temp_col).font)
                                holiday_font.color = config.holiday_color
                                out_sheet.cell(temp_row, temp_col).font = holiday_font
                            if day_data[date]['status'] == '2': #班
                                workday_font = copy(out_sheet.cell(temp_row, temp_col).font)
                                workday_font.color = config.workday_color
                                out_sheet.cell(temp_row, temp_col).font = workday_font
                        lunar_date = day_data[date]['lDate']
                        if lunar_date == '初一':
                            lunar_date = '{}月'.format(day_data[date]['lMonth'])
                        # logging.debug('date = {}, value = {}'.format(str(date), lunar_date))
                        temp_content = ''
                        if day_data[date].__contains__('value'):
                            temp_content += day_data[date]['value']
                            if len(temp_content) > config.max_length:
                                temp_content = temp_content[:config.max_length]
                        temp_content += '\n'
                        temp_content += lunar_date
                        # spacial day
                        month_day = day_data[date]['month'] + '-' + day_data[date]['day']
                        if special_day.__contains__(month_day):
                            temp_special_day = special_day.get(month_day)
                            if not temp_special_day.is_lunar:
                                temp_content += '\n'
                                temp_content += temp_special_day.desc

                        lunar_month_day = day_data[date]['lunarMonth'] + '-' + day_data[date]['lunarDate']
                        if special_day.__contains__(lunar_month_day):
                            temp_special_day = special_day.get(lunar_month_day)
                            if temp_special_day.is_lunar:
                                temp_content += '\n'
                                temp_content += temp_special_day.desc

                        temp_row = row_index + 3 + config.skip_row
                        temp_col = col_index + 1
                        out_sheet.cell(temp_row, temp_col).value = temp_content


        out_workbook.save(filename=self.target)
        out_workbook.close()

if __name__ == '__main__':
    config = Config(config_path='config.yaml')
    date_filler = ExcelDateFiller()
    date_filler.fill_date()

完整項(xiàng)目地址

https://github.com/yongjiliu/diycalendar

calendar_out.xlsx為處理好的日歷

以上就是用python自動(dòng)生成日歷的詳細(xì)內(nèi)容,更多關(guān)于python 生成日歷的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 詳解Python自動(dòng)化之文件自動(dòng)化處理
  • Python自動(dòng)化之批量處理工作簿和工作表
  • Python自動(dòng)掃描出微信不是好友名單的方法
  • python自動(dòng)化之如何利用allure生成測試報(bào)告
  • 用Python自動(dòng)下載網(wǎng)站所有文件
  • 用Python寫腳本自動(dòng)評論再也不怕碰到噴子

標(biāo)簽:克拉瑪依 赤峰 貴州 日照 臨汾 金華 雙鴨山 陽泉

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用python自動(dòng)生成日歷》,本文關(guān)鍵詞  用,python,自動(dòng)生成,日歷,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用python自動(dòng)生成日歷》相關(guān)的同類信息!
  • 本頁收集關(guān)于用python自動(dòng)生成日歷的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    奇米777影视成人四色| 视频福利在线| 午夜免费福利网站| 欧美一区视频在线| 国产日韩欧美一区二区三区乱码| 91精品久久久久久久91蜜桃| 加勒比av中文字幕| 牛夜精品久久久久久久| 日日噜噜夜夜狠狠视频欧美人| 18岁网站在线观看| 男人操女人动态图| 欧美一区免费看| 国产在线精品一区二区三区》| 久久久久99精品成人片毛片| 国产精品美女一区二区三区四区| 国产精品大尺度| 欧美三级电影网| 91丝袜美腿美女视频网站| 亚洲波多野结衣| 日韩欧美一级大片| 国产av人人夜夜澡人人爽| 国产精品沙发午睡系列| 久久国产视频网站| 91theporn国产在线观看| 国产剧情在线一区| av手机免费观看| 伊人久久大香线蕉av超碰| 成人免费在线电影网| 国产999精品视频| 亚洲天堂日韩在线| 亚洲欧美另类人妖| 久久一级电影| 好吊色视频在线观看| 日韩少妇高潮抽搐| 国产成人免费视频app| 欧美日本成人| 免费污视频在线观看| 国产免费久久av| 国产午夜精品久久久久| 欧美性xxxx极品高清hd直播| 欧美aⅴ99久久黑人专区| 国产精品美女视频| 久久精品一区二| 大片免费播放在线视频| 1000部国产精品成人观看| 中文无码久久精品| 日韩高清在线一区二区| 亚洲小说春色综合另类电影| 精品久久久中文字幕人妻| 中文字幕精品在线| 色999韩欧美国产综合俺来也| 日韩视频在线观看免费| 中文字幕乱码人妻无码久久| 亚洲91中文字幕无线码三区| 欧美综合在线第二页| 久久精品视频在线观看榴莲视频| 久久精品美女视频网站| 亚洲欧美激情在线| 国产人妻人伦精品1国产丝袜| 日本福利专区在线观看| 国产一区国产精品| 欧美日韩国产亚洲一区| 自拍视频在线看| 人妻少妇精品视频一区二区三区| 国产一区再线| 国内自拍中文字幕| 天美星空大象mv在线观看视频| 亚洲电影中文字幕| 亚洲一区二区在| 7777女厕盗摄久久久| 色呦呦呦在线观看| 寂寞少妇一区二区三区| 色777狠狠狠综合伊人| 青草成人免费视频| 色偷偷亚洲第一成人综合网址| 四虎网站在线观看| 日韩中文字幕91| av久久久久久| 日韩女同互慰一区二区| 欧美精品福利在线| 中日韩av在线播放| 亚洲精品大全| 国产精品一区二区久久精品| 91久久精品国产91性色69| 91久久国产综合| 色妞www精品视频| 在线观看完整版免费| 日本成人免费| 国内精品视频久久| 男人天堂手机在线观看| 国产精品一区二区三区在线| 成人精品国产免费网站| 亚洲最新视频在线观看| 美女高潮视频在线看| 中文字幕国产亚洲2019| h片精品在线观看| 天天干在线播放| 黑人巨大xxx| 97在线免费公开视频| 国产ts变态重口人妖hd| 97精品视频在线播放| 国产cdts系列另类在线观看| 一区国产精品视频| 人人插人人干| av成人动漫在线观看| 精品电影一区| 国产精品久久精品国产| 囯产精品久久久久久| 欧美福利影院| 色999日韩自偷自拍美女| 国产一区二区免费| 欧美精品观看| 91极品视觉盛宴| 91国内外精品自在线播放| 亚洲ⅴ国产v天堂a无码二区| 99久久精品国产亚洲精品| 国产69精品久久久久9999小说| 91在线观看免费高清| 欧美在线资源| 日韩精品一区二区三区不卡| 欧美精品不卡| www.亚洲天堂网| 中文字幕一区二区三区波野结| 日韩高清在线| 日韩三级影视| 久久久久五月天| 九九九久久国产免费| 欧美在线3区| 美乳在线观看| 人妻体内射精一区二区| 无套白嫩进入乌克兰美女| 日韩中文视频免费在线观看| 亚洲自拍另类综合| 亚洲成色www久久网站| 狠狠色伊人亚洲综合成人| 隔壁人妻偷人bd中字| 四色最新网址| 亚洲成色777777在线观看影院| 精品久久久久久无码中文野结衣| 一区二区在线高清视频| 污污在线观看| 国产精品美女久久久久久2018| 99精品久久久| 国产肉体xxxx裸体784大胆| 久热在线视频精品网站| 小说区亚洲自拍另类图片专区| 91九色精品国产一区二区| 国产精品伦子伦| 久久理论片午夜琪琪电影网| 国产一区二区三区不卡av| 无吗不卡中文字幕| 2019亚洲日韩新视频| 久久69精品久久久久久久电影好| 91精品国产乱码久久久久久久| 欧美日韩精品二区第二页| 国产精品久久久久一区二区国产| 在线91免费看| 色狼人综合干| 可以看污的网站| 日日摸夜夜爽人人添| 中文字幕在线字幕中文| 青青青草视频在线| 欧美13videosex性极品| 成人在色线视频在线观看免费大全| www.亚洲黄色| 成人午夜视频在线观看免费| 97干com| 中出中文字幕| 四虎国产精品免费| 精品无线一线二线三线| 一本岛在免费一二三区| 一区二区毛片| 91精品久久久久久粉嫩| 亚洲高潮女人毛茸茸| 久久午夜精品视频| 精品毛片久久久久久| 欧美日韩久久不卡| 色悠悠久久久久| 免费观看久久久4p| 99久久人妻无码精品系列| 黑人乱码一区二区三区av| 阿v天堂2018| 国产嫩草影院久久久久| 91破解版在线观看| 亚洲女同一区二区| 黑人与娇小精品av专区| 国产精品二区影院| av在线电影免费观看| 免费在线播放第一区高清av| 久久久久久久久久婷婷| 欧美在线免费| 国模精品一区二区三区色天香| 亚洲天堂2017| 超碰97国产在线| 豆国产97在线| 91精品一区二区三区在线观看| 日日夜夜精品视频免费| 草莓视频丝瓜在线观看丝瓜18| 男人操女人视频网站| 51精品久久久久久久蜜臀| 麻豆国产一区二区| 欧美肥婆姓交大片| 成人3d动漫一区二区三区91| 精品176极品一区| 中文在线观看免费| 欧美性bbwbbwbbwhd| 国产日韩高清一区二区三区在线| 91视频在线观看免费| 在线观看不卡一区| 日本vs亚洲vs韩国一区三区| 国产一区二区三区在线视频观看| 国产网红主播福利一区二区| 成a人v在线播放| 奇米四色…亚洲| 日产中文字幕在线精品一区| 成年美女网站| 激情六月综合| 小泽玛利亚一区二区三区视频| 婷婷综合激情| 91麻豆精品一区二区三区| 欧美日韩激情在线一区二区三区| 美乳视频一区二区| aaa在线观看| 日韩精品视频在线看| 亚洲国产一区二区三区高清| 狠狠操夜夜操| 中文在线一区二区| www.我爱av| 色乱码一区二区三区网站| 免费欧美在线视频| 亚洲丶国产丶欧美一区二区三区| 欧美性猛交xxxx免费看久久久| 欧美日韩四区| 成人免费视频视频在线观看免费| 97免费观看视频| 国产超级av| 国产乱码精品1区2区3区| 国产一级淫片久久久片a级| 国产精品久久久久久免费| 亚洲色图视频网| 亚洲精品2区| 午夜精品久久久久久久四虎美女版| www99xav| 亚洲午夜精品久久久久久久久| 久久天天东北熟女毛茸茸| 欧美大片免费久久精品三p| 亚洲精品视频免费观看| 色偷偷中文字幕| 久久av资源网| www.黄色av| 成人满18在线观看网站免费| 欧美黑人猛交| 国产乱码精品一区二区三区不卡| 久久综合婷婷综合| 亚洲成人激情在线| 欧洲精品99毛片免费高清观看| 成人免费一级片| 亚洲一区二区高清视频| 国产精品免费网站| jizzjizzjizzjizz日本| а√天堂资源国产精品| 免费成人av网站| 国产艳俗歌舞表演hd| 波多野结衣在线影院| 亚洲综合视频网站| 欧美一区二区三区精品| 男人操女人的视频在线观看欧美| 自拍视频在线网| 一二三四视频免费观看在线看| 制服丝袜中文字幕在线| 国产日韩精品久久久| 成人在线激情网| 成人美女视频在线看| 欧美日韩1234| 99精品一区二区三区| 黄色一级大片免费| 日韩欧美不卡一区| 99在线精品视频| 在线成人av| 成人国产1314www色视频| 亚洲av少妇一区二区在线观看| 91精品国产91久久久久久最新毛片| 九九九视频在线观看| 99久久婷婷国产综合精品青牛牛| 2018高清国产日本一道国产| 国产风韵犹存在线视精品| 欧美熟妇另类久久久久久不卡| 区一区二在线观看| 精品久久免费视频| a级片在线观看视频| 日韩欧美aⅴ综合网站发布| 国产高清不卡二三区| 国内精品露脸在线视频播放| 国产精品久久久91| 韩国v欧美v日本v亚洲| 欧美黑人又粗大| 欧美成va人片在线观看| 久草中文在线| 国产精品视频九色porn| 日韩a级在线观看| 黄色影院在线观看| 亚洲成人日韩| 波多野结衣一区二区三区四区| 欧美xxxbbb| 五十路六十路七十路熟婆| 午夜精品一区| 91精品国产综合久久香蕉麻豆| 日本美女久久| 免费在线亚洲欧美| av女名字大全列表| 97视频在线免费| 欧美精品91| 五月天综合婷婷| 欧美日韩一区二| 国产精品超碰97尤物18| 国产日韩欧美精品一区| 一区二区三区视频在线观看| 精品久久精品久久| 日本一级黄视频| 瑟瑟视频在线| 国产乱子伦精品视频| 亚洲国产精品欧美久久| 亚洲欧美中文在线视频| 国产69精品久久久久9| 国产又粗又黄又爽| 久久国产小视频| 欧美日韩黄色一区二区| 成人福利一区|