用python庆祝生日_python, 实现朋友家人年历生日自动提醒

为了方便提醒自己,今天有哪位朋友过生日(年历生日)。

测试环境:fedora25桌面版。

建立一个生日配置文件,注意:按日期排好序

vi /etc/birthday.txt

朋友A 1-4

朋友C 2-3

朋友B 3-8

创建脚本文件

创建脚本文件 /usr/bin/check_birthday, 脚本内容如下。

#!/usr/bin/python

# -*- coding: utf-8 -*-

from lunardate import LunarDate

import os

import sys

def get_month_day(datestring):

array = datestring.split("-")

if len(array) == 3:

(y, m, d) = array

return int(m), int(d)

else:

(m, d) = array

return int(m), int(d)

def is_birthday_today(date, birthday):

m, d = get_month_day(birthday)

return m == date.month and d == date.day

def distance_birthday_today(date, birthday):

m, d = get_month_day(birthday)

return (m - date.month) * 30 + d - date.day

def showtip(line):

os.system('zenity --info --title "title" --text "' + line + '" --width=300 --height=200')

filename='/etc/birthday.txt'

lines = open(filename).readlines()

lines = map(lambda x: x.strip(), lines)

lines = filter(lambda x: x != "", lines)

if len(lines) == 0 or lines[0].strip() == "":

print("配置文件%s中没有数据" % filename)

sys.exit(1)

today = LunarDate.today()

exist_someone_birthday = False

# 查找谁今天过生日

for line in lines:

array = line.split()

if is_birthday_today(today, array[1]):

exist_someone_birthday = True

showtip("今天生日, " + line)

sys.exit(0)

all_finish_this_year = True

# 提醒谁快要过生日

if not exist_someone_birthday:

for line in lines:

array = line.split()

if distance_birthday_today(today, array[1]) > 0:

all_finish_this_year = False

showtip("今天%d-%d, %s" % (today.month, today.day, line))

sys.exit(0)

if all_finish_this_year:

showtip("今天%d-%d, %s" % (today.month, today.day, lines[0]))

设置脚本执行权限

chmod 777 /usr/bin/check_birthday

下载LunarDate模块

pip install LunarDate

提示:如果系统中没有安装pip,先安装pip(yum install -y pip)

检查今天是否有人过生日

check_birthday

可以设置每天定时检查

通过crontab -e进行设置

# 每天12,20点检查一次

0 12,20 * * * /usr/bin/check_birthday

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wps如何保存最终状态_如何使得打开word文件显示最终的修改状态

展开全部 在日常工作中,经常为了保护文档而将其设置成最e68a84e8a2ad3231313335323631343130323136353331333363376366终状态,设置文档为最终状态,则是表示已完成这篇文档的编辑,这是文档的最终版本。如果文档被标记为最终状态,则状态属性将设置为“最终状态”,并且将禁用…

python整数反转_敲代码学Python:力扣简单算法之整数反转

学习重点:整数逆序算法力扣(LeetCode)原题​leetcode-cn.com 功能:整数反转 来源:https://leetcode-cn.com/explore/featured/card/top-interview-questions-easy/5/strings/33/ 重点:整数逆序算法 作者&am…

前端累加nan怎么解决_前端面试,你有必要知道的一些JavaScript 面试题(上)

1.使用 typeof bar “object” 判断 bar 是不是一个对象有神马潜在的弊端?如何避免这种弊端?使用 typeof 的弊端是显而易见的(这种弊端同使用 instanceof):let obj {};let arr [];console.log(typeof obj object); //trueconsole.log(typ…

tidb 配置mysql数据源_安装tidb数据库

1.下载压缩包安装tar包路径命令:wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz命令:wget http://download.pingcap.org/tidb-latest-linux-amd64.sha2562.检查文件完整性命令:sha256sum -c tidb-latest-linux-amd64.sha2…

linuxos或sv独立客户端不支持应用程序打开方式_搞不明白为什么大家都在学习 k8s

作者 | 小明菜市场来源 | 小明菜市场(ID:fileGeek)头图 | CSDN 下载自东方IC前言都2020年了,你还不知道kubernetes就真的真的真的out啦。(贩卖焦虑体) 什么是k8s,k8s这个词来自于希腊语,有主管,舵手,船长的…

mysql实现程序的动态链接_程序的链接和装入及Linux下动态链接的实现

链接器和装入器的基本工作原理一个程序要想在内存中运行,除了编译之外还要经过链接和装入这两个步骤。从程序员的角度来看,引入这两个步骤带来的好处就是可以直接在程序中使用printf和errno这种有意义的函数名和变量名,而不用明确指明printf和…

python 二进制流_Python中对字节流/二进制流的操作:struct模块简易使用教程

前言前段时间使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块。查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一些笔记以供快速上手。注:教程…

react 图片放在src里面还是public_手写Webpack从0编译Vue/React项目

当前前端开发,90%的项目都是Vue和React,然而70%的同学都基于脚手架创建项目,因为脚手架会包含项目基本框架、webpack配置、scss/sass/less解析、babel配置、DevServer、JSX/Vue文件解析、CSS前缀等,我们要做的就是开发功能模块&am…

python union函数_如何掌握Python union()方法及怎么用?

不断学习python的过程里,总能遇到各种形形色色的函数或者方法,本章给大家带来python union的用法,具体内容如下:union()方法描述:union() 取并集,效果等同于 | ,重复元素只会出现一次&#xff0…

输入分钟输出小时python_输出键,值对如何使1小时内的时间在使用Python的MapReduce中的reducer中结束?...

这是一个策略:来自Mapper的:发出每个记录的三个副本并使用二级排序:((复合键),值)((消息小时 - 一小时,当前消息的精确时间),消息)((消息小时,消息的准确时间),消息)((消息小时1小时…

python 在线预览文件_用Python PyQt写一个在线预览图片的GUI

在爬完网上一篇帖子,并得到其中的所有图片链接后,写一个GUI来实现在线预览是一个很自然的想法, 相当于实现一个python版的图片浏览器, 通过这个练习,可以让我们更熟悉PyQt这个库。这里我用的是PyQt4。以下是我的写的程…

python怎样安装模块_python中如何安装模块

下面介绍几种安装Python模块的几种方式方法1:easy_install 方式先下载ez_setup.py,运行python ez_setup 进行easy_install工具的安装,之后就可以使用easy_install进行安装package了。本文安装的是Python 2.7.13版本,已经自带了easy_install。…

java rt_java中rt包中源码了解

javap –verbose class名 查看class文件的具体内容javap -c class名继续看io类接口 java.io.Closeable功能:关闭流和相应的资源java.io.console功能:使用字节控制台,与当前的java virtual machine 相关java.io.DataInput功能:从二…

google 确定某点海拔高_一份“高投资回报率”的用户体验度量方法指南

本文核心就是介绍体验度量方法,以及如何在商业项目中如何发起一个具有高ROI(投资回报率)的用户体验量化流程。 下面文章将分为解读高投资回报和拆解体验度量、实际案例讲解三部分。一、解读高投资回报率高ROI(投资回报率)来定义体验度量流程的原因?3-5年…

md5 java代码_JAVA简单实现MD5注册登录加密实例代码

开发环境:jdk1.7,eclipse框架:springmvc,mybatis工具:maven以下代码复制即可实现MD5加密创建一个mave项目,加web。不懂得可以搜索一下就有了。注册用户的JSP页面代码如下。pageEncoding"utf-8"%&…

一维卷积神经网络_序列特征的处理方法之二:基于卷积神经网络方法

前言上一篇文章介绍了基本的基于注意力机制方法对序列特征的处理,这篇主要介绍一下基本的基于卷积神经网络方法对序列特征的处理,也就是TextCNN方法。序列特征的介绍,背景以及应用可以参考上一篇的详细介绍,这里简单回顾一下定义&…

java socket 阻塞模式_(四) 如何将socket设置为非阻塞模式

1. windows平台上无论利用socket()函数还是WSASocket()函数创建的socket都是阻塞模式的:SOCKET WSAAPI socket( _In_ int af, _In_ int type, _In_ int protocol ); SOCKET WSASocket( _In_ int af, _In_ int t…

python中的pygame模块使用方法_Pygame的基本使用

Pygame有很多模块,每个模块又有很多方法,在此不能够逐一讲解,所以,我们通过一个实例来学习Pygame,然后再分解代码,讲解代码中的模块。例:制作一个跳跃的小球游戏。创建一个游戏窗口,…

java mongodb 插入数据_mongoDB 插入数据 用java实现

import java.net.UnknownHostException;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBObject;import com.mongodb.Mongo;/** *用java 往mongoDB插入数据 * author wwd* */public class InsertData {publi…

python的特征提取实验一_Spark 2.1.0 入门:特征抽取 — TF-IDF(Python版)

这一部分我们主要介绍和特征处理相关的算法,大体分为以下三类:特征抽取:从原始数据中抽取特征特征转换:特征的维度、特征的转化、特征的修改特征选取:从大规模特征集中选取一个子集特征提取TF-IDF (HashingTF and IDF)…