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

测试环境: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

python生日提醒_python, 实现朋友家人年历生日自动提醒相关推荐

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

    为了方便提醒自己,今天有哪位朋友过生日(年历生日). 测试环境:fedora25桌面版. 建立一个生日配置文件,注意:按日期排好序 vi /etc/birthday.txt 朋友A 1-4 朋友C 2 ...

  2. python股票交易微信提醒_python实现秒杀商品的微信自动提醒功能(附代码)

    技术实现原理:获取京东的具体的商品信息,然后再使用微信发送提醒 工具:需要两个微信号,这两个微信号互为好友 如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的 ...

  3. python输出生日程序_python学习5--生成日期/生日

    前言 python接口自动化添加员工信息时,需要填写生日,批量添加员工,如何随机生成生日呢? python提供了一个time和calendar模块可以用于格式化日期和时间. 一.了解python3 日 ...

  4. python编写生日代码_python学习5--生成日期/生日

    前言 python接口自动化添加员工信息时,需要填写生日,批量添加员工,如何随机生成生日呢? python提供了一个time和calendar模块可以用于格式化日期和时间. 一.了解python3 日 ...

  5. python 数据库查询结果邮件提醒_python读取postgresql数据库并发送相关提醒邮件

    代码如下: #!/usr/bin/env python import smtplib from email.mime.text import MIMEText import psycopg2 impo ...

  6. 什么是金山文档轻维表?如何根据日期自动提醒发送表格中的内容?

    什么是金山文档轻维表? 金山文档作为老牌文档应用,推出了新的功能轻维表,是一款新式在线协作表格,具有传统表格强大的内核发动机,是专为多人协作场景设计的增强版表格软件,可以支持快速搭建轻量应用. 由于金 ...

  7. [整理+原创]ubuntu Thunderbird Mail设置自动提醒

    开机启动的设置方法 1 // 在终端输入 2 gnome-session-properties 然后添加thunderbird为启动项 方法1--自动提醒 下载插件:Thunderbird Mail客 ...

  8. python制作生日礼物_Python全国少儿编程竞赛参赛作品《智能生日提示小助手》解析...

    本文介绍的作品是全国青少年创意编程与智能设计大赛创意编程比赛王梓名同学的参赛作品. 作品说明 一个记录朋友生日的小程序,数据来源于本地csv文件,简单好用,希望大家喜欢,也欢迎提供宝贵的意见. 正文 ...

  9. python查生日代码_python代码检测生日是否在π的一百万位中

    前排提示: 这篇文章转载自 阴阳记 我为什么要转载这篇文章呢?首先,这位博主直接把一百万位π显示在页面上,当时打开的时候我的内心无比#%%¥#¥--#!%¥--***O()然后导致打开页面太慢了--而 ...

最新文章

  1. 逻辑覆盖测试(六)--路径测试
  2. 如何在python中显示电脑中的图片-如何在python界面显示图片
  3. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )
  4. 学习总结:CSS(一)定义方式、选择器、选择器权重
  5. lnmp环境脚本自动配置
  6. Angular里的RouterOutlet指令学习笔记
  7. ipmsg飞鸽传书系统即时通讯
  8. 【英语学习】【English L06】U05 Appointments L2 I'd like to make an airport shuttle service reservation
  9. 如果有人再问你 Java 的反射,把这篇文章扔给他
  10. c语言结构体语法分析,C语言结构体struct的语法解析
  11. sqlserver的存储过程
  12. 探索:GHOST分区之后如何找回原分区
  13. SIGTERM等信号含义
  14. docker版本AWVS14
  15. 【微信小程序】自己的小程序跳转到京东小程序商品详情页
  16. matlab代码运行教程(如何运行下载的代码)
  17. 卡通人“小糊涂”就要登场亮相
  18. 你为什么始终做不好会议营销?「会议营销」电子书免费下载
  19. MarkdownPad安装及基本配置
  20. 家用宽带优化-光猫桥接,路由器拨号

热门文章

  1. 用Auto-TensorCore代码生成优化matmul
  2. 微调BERT:序列级和令牌级应用程序
  3. Yolo:实时目标检测实战(下)
  4. 2021年大数据ELK(二十五):添加Elasticsearch数据源
  5. git push 时不用每次都输入密码的方法
  6. eShopOnContainers 知多少[8]:Ordering microservice
  7. 把项目放到码云上,通过git 进行项目管理
  8. uwsgi 安装报错 plugins/python/uwsgi_python.h:2:20: fatal error: Python.h: No such file or directory
  9. linux内核调优参考
  10. Linux查看目录挂载点