用Python实现自动发送周报给老板,强制周报不用愁

news2024/11/24 20:11:12

前言

老板每周要求写周报上交?

像我这种记性不好的,一个月四周忘记三次

只能用点小技术,用Python写个小工具,让它每周帮我给老板发周报~

Github: Weekday 小工具

目标细化

  • SMTP发送邮件, 用smtplib

  • 读取配置文件

  • 发件人

  • 收件人

  • 抄送到哪些人

  • 我的账户,密码, 昵称

  • 参数化命令行,用argparse

  • 支持markdown to HTML

简单使用

cmd -a "工作内容" -p # 打印success

复杂使用

cmd -e -p # 激活vim, 然后:wq之后继续cmd执行, 就向git commit -a, 不过要打印success
~~~python
忘了自己写的程序怎么用
~~~python
cmd -h # 打印帮助信息

设计程序

有一个临时文件, 用来存放记录. 每次发送邮件之后, 将临时文件归档处理.

# 临时文件, 存在~/.weekday/current.rp
[global]
editor = vim
[to]
email = 
cc = 
[from]
email = 
password = 
nickname = 
[SMTP]
host = smtp.exmail.qq.com

能在python脚本在执行时, 读去到这个配置文件

# 获取配置项示例
import ConfigParser
config = ConfigParser.ConfigParser()
config.readfp(open('文件名'))
defaultEditor = confg.get('global', 'editor') # 返回vim

可以解析在执行命令时传入的参数

python学习交流Q裙 261823976###
import argparse
parser = argparse.ArgumentParser(
    description='Tell your leader what you did this week')
# define command line parameters
parser.add_argument('-v', '--version',
                    action='store_true',
                    help='show the version information')
parser.add_argument('-e', '--edit',
                    action='store_true',
                    help='open default editor for editing report')
args = parser.parse_args()
print args

准备发送邮件, 先把markdown转成HTML, 然后使用smtplib发送邮件.

import smtplib
import mistune
from email.mime.text import MIMEText
content = mistune.markdown(content, escape=True, hard_wrap=True)
msg = MIMEText(content, 'html', 'utf-8')
msg['Subject'] = u'工作周报 %s\r\n' % date
msg['From'] = hFrom
msg['To'] = hTo
msg['Cc'] = hCc
smtp = smtplib.SMTP(conf['host'])
smtp.login(conf['from_email'], conf['password'])
smtp.sendmail(conf['from_email'],
              TO_ADDR + CC_ADDR,
              msg.as_string())
smtp.close()

开始写代码

源码.资料.素材.点击领取即可

细分功能实现的关键代码都已经整理好了. 现在只需要通过一串逻辑将她们联系起来. 看上去就能完成目标了.

python学习交流Q裙 261823976###
# main.py
def main():
    args = loadArguments()
    if args.version:
        print DESC
    if args.append:
        append(args.append, tmpFileName)
    // ... other code ...
if __name__ == '__main__':
    main()
python main.py -a Hello -p

最后只需要配合crontab工具, 就可以实现周期性定时发送了

# crontab -l
SHELL=/bin/zsh
PATH=/usr/local/bin
HOME=/Users/qiuwei
# run tasks
# minute hour day month week command
0 18 * * 5 wp -p

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇

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

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

相关文章

uml图六种箭头的含义

在看uml图忘记箭头含义记录一下 泛化 概念:泛化是一种一般与特殊、一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。在java中用来表示继承的关系。 表示方法:用实线空心三角箭头表示。 实现 概念…

Postman中cookie的操作

在接口测试中,某些接口的调用,需要带入已有Cookie,比如有些接口需要登陆后才能访问。 Postman接口请求使用Cookie有如下两种方式: 1、直接在头域中添加Cookie头域,适用于已经知道请求所用Cookie数据的情况。 2、使用…

Vue3.0学习笔记

文章目录一. Vue开始1.1 渐进式框架1.2 单文件组件1.3 API 风格1.3.1 选项式 API1.3.2 组合式 API二. Vue基础2.1 创建一个 Vue 应用2.1.1 应用实例2.1.2 根组件2.1.3 挂载应用2.1.4 DOM 中的根组件模板2.1.5 应用配置2.1.6 多个应用实例2.2 模板语法2.2.1 文本插值2.2.2 原始 …

4K、高清、无水印视频素材库

推荐5个可以免费下载视频素材的网站,建议收起来! 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 菜鸟图库主要提供设计素材为主,自媒体等相关素材也很多,像商用图片、背景图、视频素材、音频素材都很齐全。视频素材全部都是…

不同接口的LCD硬件操作原理

不同接口的LCD硬件操作原理 文章目录不同接口的LCD硬件操作原理参考资料:一、 应用工程师眼里看到的LCD1.1 像素的颜色怎么表示二、 驱动工程师眼里看到的LCD2.1 统一的LCD硬件模型2.2 MCU常用的8080接口LCD模组2.3 MPU常用的TFT RGB接口2.4 有一个MIPI标准参考资料…

大专生现在转行IT可行吗?

抛开其他具体情况不说,大专是行业基本要求,大专学习转IT完全没有问题! 关于IT行业的学历要求 大专学历是满足基本入行要求的,并且大专可以选择的方向也很多,比如开发、云计算、大数据、数据分析等方向,这…

云计算ACP云服务器ECS实例题库(二)

😘作者简介:一名99年软件运维应届毕业生,正在自学云计算课程。👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。&…

java面试题-容器

目录 1、Java 容器都有哪些? 2.、Collection 和 Collections 有什么区别? 3、 List、Set、Map 之间的区别是什么? 4、HashMap 和 Hashtable 有什么区别? 5、 如何决定使用 HashMap 还是 TreeMap? 6、 说一下 Has…

融资、量产和一栈式布局,这家Tier 1如此备战高阶智驾决赛圈

作者 | Bruce 编辑 | 于婷 从早期的ADAS,到高速/城市NOA,智能驾驶的竞争正逐渐升级,这对于车企和供应商的核心技术和产品布局都是一个重要的考验。 部分智驾供应商已经在囤积粮草,响应变化。 2023刚一开年,智能驾驶…

C语言消消乐游戏代码

C和C游戏趣味编程》一书各个章节的案例代码,每章案例逐步利用学到的语法知识。 本章我们将编写十字消除游戏,用户点击空白方块,沿其上下左右方向寻找第一个彩色方块,如果有两个或两个以上颜色一致,就将其消除。在进度…

Spark 3.1.1 shuffle fetch 导致shuffle错位的问题

背景 最近从数据仓库小组那边反馈了一个问题,一个SQL任务出来的结果不正确,重新运行一次之后就没问题了,具体的SQL如下: select col1,count(1) as cnt from table1 where dt 20230202 group by col1 having count(1) > 1这个问题是偶发…

SpringBoot 整合JWT实现基于自定义注解的-登录请求验证拦截(保姆级教学,附:源码)

学习目标: Spring Boot 整合JWT实现基于自定义注解的 登录请求接口拦截 例: 一篇掌握 JWT 入门知识1.1 在学习SpringBoot 整合JWT之前,我们先来说说JWT进行用户身份验证的流程 1:客户端使用用户名和密码请求登录 2:服务端收到请求&#xf…

spring中@Autowire和@Resource的区别在哪里?

介绍今天使用Idea写代码的时候,看到之前的项目中显示有warning的提示,去看了下,是如下代码?Autowire private JdbcTemplate jdbcTemplate;提示的警告信息Field injection is not recommended Inspection info: Spring Team recommends: &quo…

AntDB-M设计之内存结构

亚信科技专注通信行业多年,AntDB数据库从诞生开始,就面对通信级的大数据量应用场景挑战,在性能、稳定性、规模化等方面获得了超过10年的通信核心业务系统验证,性能峰值达到每秒百万的通信核心交易量。AntDB-M(AntDB内存…

CMMI有哪几个级别,每个级别有哪些其特征

CMMI 一共分五个级别,一级低,五级高,一般初次认证CMMI从三级或者二级开始。 1、CMMI一级,完成级。 在完成级水平上,企业对项目的目标与要做的努力很清晰。项目的目标得以实现。一般来说,公司的初始阶段就是…

工作记录------@Accessors(chain = true)引起的BUG,Excel导入时获取不到值

工作记录------Accessors(chain true)引起的BUG,Excel导入时获取不到值 如题所示 背景:在进行文件excel文件导入时,发现实体类获取到的属性值都为null。 框架:com.alibaba.excel 2.2.0的版本。 结论:首先说下结论 如…

2021年职业院校技能大赛“网络安全”项目江西省A模块

目录 一、竞赛时间 三、竞赛任务书内容 (一)拓扑图 (二)A模块基础设施设置/安全加固(200分) A-1:登录安全加固 1.密码策略(Web) a.最小密码长度不少于8个字符&…

C++入门基础

本章内容: 一、C前言 1. 什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代&#x…

笔记本连接wifi,浏览器访问页面,显示访问被拒绝

打开chrome、edge浏览器访问第1个第2个页面正常,后面再打开页面显示异常。 但手机连接正常,笔记本连接异常,起初完全没有怀疑是wifi问题 以为用了vpn软件问题,认为中了病毒。杀毒,并没有中毒。 1、关闭vpn代理&#…

基于Java+Spring+vue+element商城销售平台设计和实现

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…