又是一篇教你摸鱼的文章,用Python实现自动发送周报给老板

news2024/10/6 22:20:38

前言

有没有哪个同志跟我一样,每周都要写工作周报

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

索性就用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裙 770699889###
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裙 770699889###
# 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/1491.html

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

相关文章

ARM 汇编基础

一、ARM架构 ARM芯片属于精简指令集计算机(RISC:Reduced Instruction Set Computing),它所用的指令比较简单,有如下特点: 对内存只有读、写指令对于数据的运算是在CPU内部实现使用RISC指令的CPU复杂度小一点,易于设计…

WebShell箱子简介与原理

今天继续给大家介绍渗透测试相关知识,本文主要内容是WebShell箱子简介与原理。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授…

【面试】【项目】谷粒商城

视频链接 项目调查 这项目是这么多免费视频里最好的了。但依旧是demo。 最好还是买慕课网上的实战课,那些老师都有丰富的开发经验,有经验跟没经验讲的课是完全不同的。 谷粒商城我觉得是不low的,我很菜,毕业一年半被多次辞退&a…

数据结构之-【排序】

目录 排序 ⚡️冒泡排序 ⚡️选择排序 ⚡️插入排序 ⚡️堆排序 ⚡️归并排序 ⚡️快速排序 🏳️‍🌈排序 将数字从小到大的顺序排列 🔴冒泡排序 「冒泡排序」重复"从序列右边开始比较相邻两个数字的大小,再根据结果交换两个…

国产蓝牙耳机哪个牌子好?国产蓝牙耳机质量排行榜

随着3.5 mm耳机插孔被淘汰,特别是5G时代,让手机的内部结构变得越来越小,要将耳机插口塞进一个新的插口,无疑是一件非常困难的事情,而随着蓝牙技术的不断进步,蓝牙耳机也逐渐成为了如今人们配戴手机的首选&a…

Revit中阀门在项目中不可用无法与管道连接?

一、Revit中阀门在项目中不可用的问题 在项目中放置阀门时,有时候不可用,会出现如图1所示问题,无法与管道连接。 出现上图显示问题是因为在编辑族的时候,阀门两边的连接件原心没有完全重合。打开编辑族界面,可以看到如…

怎么辨别哪些才是真的低代码开发平台?

怎么辨别哪些才是真的低代码开发平台?第一次看到这个问题时,我就知道为什么有人会这么问了,目前低代码市场龙蛇混杂,普通人很难分辨出“真”低代码。所以这个问题中“真正”二字最为重要,圈起来,下面我们正…

【产品新体验】CSDN开发云·云IDE使用教程

【产品新体验】CSDN开发云云IDE使用教程1、初识云IDE1.1 拉去git项目1.2 密钥管理2、整体分析云IDE产品介绍 云IDE使用教程 免费使用地址:点击【云IDE】,即可开始创建工作空间啦~ CSDN最新产品【云IDE】来啦!【云IDE】将为各位技术er一键秒级…

No6-3.从零搭建spring-cloud-alibaba微服务框架,实现资源端用户认证与授权等(三,no6-3)

代码地址与接口看总目录:【学习笔记】记录冷冷-pig项目的学习过程,大概包括Authorization Server、springcloud、Mybatis Plus~~~_清晨敲代码的博客-CSDN博客 之前只零碎的学习过spring-cloud-alibaba,并没有全面了解过,这次学习p…

【Python】入门,总结与拾遗

前言 根据我的实践经验来看,对于有编程基础(如C语言)的同学来说,python入门应该很简单,而且加上官方文档做得非常好,所以个人建议python的学习主要去参考官网。本博客主要是记录那些容易忽略的关键点以及对…

蓝桥杯单片机第七届省赛题详细讲解(温度记录器)

看之前强烈建议先自己做一遍!!!演示效果题目讲解代码main.cds1302.cds1302.honewire.conewire.h工程文件演示效果 题目讲解 首先我们从系统框图看起: 做题之前要做的是把系统框图里面的各个模块先提前调试好!&#x…

StarRocks 的学习笔记

StarRocks 的学习笔记 文章目录StarRocks 的学习笔记1. 介绍1.1 StarRocks 特性1.2 使用场景1.3 OLAP 多维分析1.4 实时数据仓库1.5 高并发查询1.6 统一分析2. 系统架构2.1 StarRocks架构2.2 StarRocks业务架构2.3 StarRocks 数据生态2.4 *数据管理3. 特性3.1 MPP分布式执行框架…

ES6中的set与map

文章目录1.set1.1创建set集合1.2 如何对set集合进行后续操作1.3 如何与数组进行相互转换1.4 如何遍历1.5set的应用2.map集合2.1 如何创建map2.2 如何进行后续操作2.3 如何与数组转换2.4 遍历一直以来,JS只能使用数组和对象来保存多个数据,缺乏像其他语言…

介绍document部分自带的方法及属性,场景使用例如倒计时等

适用场景页面不显示(不看)触发方法停止运行逻辑,页面显示(看)触发方法继续运行逻辑。 (例如倒计时) 操作手法触发,浏览器多页签切换时触发,或者当前页隐藏浏览器&#xf…

飞象星球落地舟山36所学校 双师课堂化解课后服务区域资源差异

傍晚的阳光正好,此时舟山二小北校区五年级学生周陈延正紧盯大屏幕,沉醉在《航天探秘》飞象星球双师素质课堂带来的知识奥义中。作为浙江极具特色的海岛城市,舟山正进行着有关课后服务领域的新探索,双师素质课堂便是“千岛之城”舟…

VSCODE联合ModelSim语法检错

Vscode联合ModelSim检错 一、Vscode配置 首先在 vs code 中安装支持 Verilog 的插件: 在 vs code 的 Extension 中搜索 Verilog,安装如下图所示的插件; 二、ModelSim语法检查器检查 Modelsim的安装破解本文不再赘述,可选的Mod…

【初阶数据结构】第一篇——时间复杂度和空间复杂度详解(C描述)

文章目录前言什么是数据结构?什么是算法?1. 算法效率1.1如何衡量一个算法的好坏1.2 算法的复杂度1.2 复杂度在校招中的考察2. 时间复杂度2.1 时间复杂度的概念2.2 大O的渐进表示法2.3 常见时间复杂度计算举例例1双重循环例2. 多未知数例3. 常数次循环例4…

【深度学习】卷积神经网络之双阶段目标检测|R-CNN、SPP-Net、Fast-RCNN、Faster-RCNN、R-FCN

文章目录基本概念一、R-CNN1. 网络结构2. 训练流程3. 测试阶段5.RNN存在的问题二、SPP-Net1. 网络结构2. 基础知识共享卷积计算金字塔池化 Spatial Pyramid Pooling3. 训练流程4. 测试流程5. 存在问题三、 Fast R-CNN1. 网络结构2. 基础知识感兴趣区域池化层 (ROI pooling)多任…

别再被数据分析“割韭菜了”,光学python、BI没有用,上项目才行

前几天有个粉丝找我,说花699报了一门数据分析课程,还有实战项目,让我帮她看看她做的数据分析。项目的名称叫:豆瓣高分电影分析。她写了一大堆内容,我也没细看,截取几张可视化图表给大家,大家觉得…

嵌入式串口转CAN模块详细参数分析

引脚定义和尺寸 测试评估板 将模块插到评估板上,注意模块引脚标注要与评估板上插座引脚标注相对应,然后进行参数设置。特别的,也可以在模块集成到电路板上后,直接通过模块的CAN口来配置参数。 通过CAN通道配置参数 模块集成到用…