python 生成 1900-2100 的二十四节气文件
[学习笔记] 转载
#!/usr/bin/python3.7
# -*- coding:utf-8 -*-
'''
整体思路
1:根据公式算出节气日期 1900 年到 2100 200 年的时间
2:特殊的年份进行纠正
3:保存到文件里去
'''
import sys
import json
import gc
import os
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
reload(sys)
class jieqi:
# 计算节气的C常量组
C_list_21 = [3.87, 18.73, 5.63, 20.646, 4.81, 20.1, 5.52, 21.04, 5.678, 21.37, 7.108, 22.83, 7.5, 23.13, 7.646, 23.042, 8.318, 23.438, 7.438, 22.36, 7.18, 21.94, 5.4055, 20.12]
C_list_20 = [4.6295, 19.4599, 6.3826, 21.4155, 5.59,20.888, 6.318, 21.86, 6.5, 22.2, 7.928, 23.65, 8.35, 23.95, 8.44, 23.822, 9.098, 24.218, 8.218, 23.08, 7.9, 22.6, 6.11, 20.84]
# 节气名称组
name_Arr = ["立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至", "小寒", "大寒"]
def __init__(self):
self.c_list=[]
## 特殊年份特殊节气进行纠正
def rectify_year(self,year,jieqiid,day):
## 特殊年份
rectify_year = [2026,2084,1911,2008,1902,1928,1925,2016,1922,2002,1927,1942,2089,2089,1978,1954,1918,2021,1982,2082,2019,2021]
## 特殊节气
rectify_jieqi = [1,3,6,7,8,9,10,10,11,12,14,15,17,18,19,20,21,21,22,22,23]
## 偏移量
rectify_offset = [-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,1,-1,1]
pop2 = -1
if year in rectify_year:
if year == 2089:
pop1 = rectify_year.index(year) ## 找到位置
pop2 = pop1+1
else:
pop1 = rectify_year.index(year) ## 找到位置
if rectify_jieqi[pop1] == jieqiid:
day = day + int(rectify_offset[pop1])
if rectify_jieqi[pop2] == jieqiid:
day = day + int(rectify_offset[pop2])
return day
#计算节气日期,并创建文件
def creat_year_jieqi(self,year):
year_pre = year//100
if year_pre == 19:
C_arr = self.C_list_20
elif year_pre == 20:
C_arr = self.C_list_21
year_num = year%100
list_arr = []
for i in range(0, 24):
C = C_arr[i]
## 注意:凡闰年3月1日前闰年数要减一,即:L=[(Y-1)/4],因为小寒、大寒、立春、雨水这两个节气都小于3月1日,所以 y = y-1
if i == 0 or i == 1 or i == 22 or i == 23:
if self.comrun(year):
days = (year_num * 0.2422 + C) // 1 - ((year_num-1)// 4)
else:
days = (year_num * 0.2422 + C) // 1 - (year_num // 4)
else:
days = (year_num * 0.2422 + C) // 1 - (year_num // 4)
## 特殊年份节气进行纠正
days = self.rectify_year(year,i,days)
days = int(days)
days = '%02d' % days
y = int(year_num // 1)
m = i // 2 + 2
if m == 13:
m = 1
m = '%02d' % m
y = '%02d' % y
strs = "{3}{0}-{1}-{2} 00:00:00".format(str(y), str(m), str(days),str(year_pre))
item = dict(name=self.name_Arr[i], jieqiid=str(i + 1), time=strs)
# print (item)
list_arr.append(item)
list_str = json.dumps(list_arr,ensure_ascii=False) ## 中文不进行编码
file_name = "./json/{0}.json".format(str(year))
with open(file_name, "w",encoding="utf-8") as f: ## 打开时用 utf-8 编码
json.dump(list_str, f,ensure_ascii=False)
print("{0}已载入文件完成...".format(str(year)))
# 读取年份为 name 年的节气数据
def read_json_file(self,name):
json_file = open('./json/' + name + '.json', 'r',encoding="utf-8")
json_str = json_file.read()
dic = json.loads(json_str)
print(dic)
# 读取测试
# read_json_file('2029')
# 读取所有年份的节气数据
def check_all_file(self):
for index in range(1900, 2100):
c_file_name = './json/{0}.json'.format(str(index))
if os.path.isfile(c_file_name):
json_file = open(c_file_name, 'r',encoding="utf-8")
json_str = json_file.read()
dic = json.loads(json_str)
print (str(index) + dic)
## 算是否是闰年
def comrun(self,year):
i = 0
if (year % 4) != 0 :
i=0
elif ((year % 100) == 0) & ((year % 400) != 0):
i=0
else:
i=1
return i
jieqi = jieqi()
#jieqi.creat_year_jieqi(2004)
#jieqi.read_json_file('2006')
#jieqi.check_all_file()
#
#for i in range(1900,2100):
# jieqi.creat_year_jieqi(i)
版权声明:本文为转载文章,原文地址:https://blog.csdn.net/rainredhezhang/article/details/88824524
python 生成 1900-2100 的二十四节气文件的更多相关文章
- Python生成Windows可执行exe文件
环境 python3.6.5 pyinstaller3.5 windows 10 下载地址 python:https://www.python.org/ftp/python/3.6.5/python- ...
- 如何使用python生成xml
最近要用python生成一个xml格式的文件.因为有一些内容是中文,原来的xml文件中使用了CDATA 的部分. 而之前的python程序所用的库中没有 创建这个区域的方法.无奈研究了大半天. 最后用 ...
- Python:构建可执行exe文件
学习自: Python 程序打包成 exe 可执行文件 - 不夜男人 - 博客园 Python生成Windows可执行exe文件 - 韩小北 - 博客园 pyinstaller参数介绍以及总结_Bea ...
- windows平台 python生成 pyd文件
Python的文件类型介绍: .py python的源代码文件 .pyc Python源代码import后,编译生成的字节码 .pyo Python源代码编译优化生成的字节 ...
- Python生成PASCAL VOC格式的xml标注文件
Python生成PASCAL VOC格式的xml标注文件 PASCAL VOC数据集的标注文件是xml格式的.对于py-faster-rcnn,通常以下示例的字段是合适的: <annotatio ...
- Python生成pyc文件
Python生成pyc文件 pyc文件是py文件编译后生成的字节码文件(byte code).pyc文件经过python解释器最终会生成机器码运行.所以pyc文件是可以跨平台部署的,类似Java的.c ...
- python 生成 xml文件 属性的顺序问题
需求很奇葩. 文档示例 <ITEM key="username" eng="User Name" chn="用户名" val=&quo ...
- 用Python生成测试数据
转载自:http://blog.csdn.net/caz28/article/details/45972109 有时我们需要大量的数据,一般编个程序生成一堆随机数据,Python很适合文本处理,干这个 ...
- python模块介绍- xlwt 创建xls文件(excel)
python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...
随机推荐
- 命令行备忘录 cli-memo
前言 有时候想用一个简洁点儿的备忘录,发现没有简洁好用的,于是就想着开发一个,秉着简洁 的思想,所以连界面都没有,只能通过命令行来操作(尽可能的将命令简化).设计的时候 借鉴了git分支的思想,每个备 ...
- 树莓派+花生棒+leanote搭建自己的笔记服务器
背景 对于一个程序猿来说.女朋友可以(暂时)没有,但是不能没有一个很好的记笔记的应用.因为记笔记可以帮助自己积累学习提升自己.每一次回头看自己记得笔记,你都会有新的理解. 也许有人会说,用有道云啊,有 ...
- HTTP协议GET HEAD简单介绍
一.HTTP协议简介 超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议,自 1990 年起,HTTP 就已经被应用于 WWW 全球信息服务系统. HT ...
- SSM-SpringMVC-03:SpringMVC执行流程一张有意思的图
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 上次的图也不全,这次的图也不是完整版,但是多了一个拦截器,我觉得挺有意思的,我就放上来了 他Handler ...
- 在Workload Automation中实现suspend分析
1. 背景 这里涉及到两个工具analyze_suspend.py和Workload Automation. 下面analyze_suspend.py简称为ASPY,Workload Automati ...
- selenium提供的截图功能
get_screenshot_as_file()提供一个截屏功能.在自动化执行过程中,执行失败后只能看到代码的运行错误,而不能直接看到ui上的错误,利用截屏保存下来很容易的进行问题的判断 先来执行一个 ...
- Python 下载win32api 模块
终端输入 pip install pypiwin32
- HTTP/HTTPS 学习笔记
超文本传输协议(HyperText Transfer Protocol) 伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机网络中的应用层,HTTP是建立在TCP协议之上的. HTT ...
- com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别 serverTimezone设定
转自: http://blog.csdn.net/superdangbo/article/details/78732700 com.mysql.jdbc.Driver 和 com.mysql.cj.j ...
- Axure使用——创建折叠菜单
1.先添加动态面板 2.往动态面板中添加矩形 3.接着先隐藏下面的矩形(也就是你要折叠起来的内容) 4.一定要注意: 5.添加动态面板的状态 6.把之前做的那个矩形全部复制到state1中 7.把之前 ...