用Python编写一个私人助理程序,为我们起草电子邮件
前言
在你的工作中是否有一些你自己经常做重复的任务?这就是编程的乐趣所在。通过一些思考和编程,您可以使您的任务自动化,并为您节省大量时间。在本文中,我们将介绍一些Python工具和技巧,让你可以创建自己的Python个人助理。
1. 助手功能
我们要创建一个助手,可以写电子邮件。只需要输入收件人的名字或昵称,其余的都由它来处理。要写一封好的电子邮件,这个程序会查看我们制作的Excel表格,里面有我通常每周都会给他们发邮件的人的基本信息。例如,如果我输入Caleb(我想要给谁发电子邮件的名字),它会为我复制以下内容:
Full name: Caleb (Coco) Stephano
Email to send to: stevens.coco12345@snailmail.com
Hi Coco,
I hope all is well on the UX team!
Thanks,
Ben
2. 输入程序指令
为了让您的Python助手帮助您,您可能需要向它提出一些要求。首先,提示用户输入文本:
answer=input('What can I help you with? Enter here: ')
当您运行您的文件时,您将注意到在终端或命令提示符中,光标正好放在上面圆括号内的文本之后,为您的输入做好准备。
3.使用openpyxl从Excel中获取数据
假设你在Excel表格中有关于你所有朋友的信息。更具体地说,是他们的姓和名、昵称、电子邮件地址、兴趣爱好等等。您可以使用openpyxl从该工作表中提取数据,以便您的Python助手可以使用它:
import openpyxl
book = openpyxl.load_workbook(r'Put_Your_Path_To_Sheet_Here')
ws = book.active
您现在可以使用ws来做各种事情。例如,让我们用我们的朋友的例子,想象每一列是一个信息列表:
这张单子上写着Beth很喜欢打网球。然而,我们不应该每次都打开和搜索我们的表单来记住这一点。我们的助理会帮我们的。例如,下面的附加代码将列昵称数据存储到数组中。这样,你的助手可以搜索和处理你的数据:
import openpyxl
#SET UP SHEET
book = openpyxl.load_workbook(r'Put_Your_Path_To_Sheet_Here')
ws = book.active
#SET UP ARRAY TO HOLD NICKNAMES
nickArray=[]
#APPEND NICKNAMES IN LIST, RUNNING THROUGH COLUMN B OF THE SHEET UNTIL THERE'S AN EMPTY CELL
skip=True
firstRow=True
for cell in ws['B']:
if (cell.value==None):
continue
if (skip==False):
nickArray.append(cell.value)
firstRow=False
skip=False
#PRINT ALL ITEMS IN THAT ROW TO SEE THAT IT WORKS
for x in nickArray:
print(x)
这段代码查看工作表的列B,跳过第一行(通常是标题行),然后扫描整行数据,直到没有剩下。它将每个项添加到数组中。
4. 使用tkinter显示用户友好的消息
在电脑上,人们通常不会在终端机或命令提示符中埋头工作。通常,你会使用一些不错的用户界面,比如Microsoft Word或谷歌Chrome。您可能会注意到,您通过带有按钮的漂亮窗口和这些程序交互。这就是好的UX/UI发挥作用的地方。
到目前为止,您和助手在终端或命令提示符中通信,这不是理想的UI。Python的tkinter库包含允许您创建新的和改进的UI的工具。
下面是一个简单的例子。假设当我们运行update .py文件以使用最新的Excel表信息更新我们的助手时,我们希望显示一条“update Successful”消息:
from tkinter import *
#DISPLAY SUCCESS MESSAGE
root=Tk()
labelfont=('times', 20, 'bold')
root.title('Success Confirmation')
successText='Your update was successful'
widget=Label(root, text=successText, wraplength=600, justify=LEFT)
widget.config(height=35, width=90)
widget.pack(expand=YES, fill=BOTH)
root.mainloop()
它的工作方式是将tkinter根目录设置为基本窗口构建块,并在其上添加额外的细节。我添加了标题、正文文本、关于文本外观的详细信息、窗口尺寸以及关于窗口功能的其他规范。当你运行这个文件时,最终结果看起来是这样的:
5. 使用pyperclip将文本复制到剪贴板
为我起草邮件的助手会在我面前显示邮件文本。使用pyperclip库,它有工具可以自动将任何文本复制到剪贴板:
#THIS IS IN assistant.py
import pyperclip
myText="Hi Coco,nn"+"I hope all is well on the UX team!nn"+"Thanks,n"+"Ben"
pyperclip.copy(myText)
6. 将文本写入日志
如果您希望保留一个日志,其中包含您的助手上次帮助您的时间,该怎么办?创建一个名为log.py的新Python文件。这就是日志。如果您的助手有以下代码,则可以始终使用日期和时间为您填充日志:
#THIS IS IN assistant.py
#IMPORT LIBRARY THAT GETS CURRENT DATE AND TIME
import datetime
#CREATE AND NEW DATE AND TIME
now = datetime.datetime.now()
#WRITE DATE AND TIME TO THE LOG
with open("log.py", "w") as f1:
f1.writelines(now.strftime("%Y-%m-%d %H:%M:%S")
原文:
https://medium.com/swlh/i-used-python-to-make-a-personal-assistant-and-it-drafts-emails-for-me-434ac3ab6d38
- MVC 获取路由的 URL 参数值和默认值的集合。
- 用libsvm进行回归预测
- mvc路由配置.html结尾的伪静态
- 【编程基础】Java的接口和抽象类
- 循序渐进调优union相关的sql(r2笔记23天)
- 对分区表导入导出的水平,垂直切分(r2第22天)
- 巧用parallel极速提升数据加载速度(r2第21天)
- 【Windows编程】创建多文档界面
- 生产环境sqlldr加载性能问题及分析之二(r2第20天)
- [Python]从豆瓣批量获取看过电影的用户列表,并应用kNN算法预测用户性别
- 关于desc的一个奇怪问题及分析(r2第18天)
- R语言进行中文分词,并对6W条微博聚类
- 只言片语分析datapump的工作原理(r2第18天)
- 开发 | TensorFlow全新的数据读取方式:Dataset API入门教程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++基础 数据类型占字节大小分析
- socket方式传输文件
- 《重构-代码整洁之道TypeScript版》第2天
- 堆积柱形图(stacked barplot)展示密码子偏向性的RSCU值
- 《重构-代码整洁之道TypeScript版》第一天
- Hive小知识之分桶抽样
- CountDownLatch类在性能测试中应用
- 算法集锦(20) | 自动驾驶 | 交通标志识别算法
- 敏捷回归测试
- 算法集锦(21) | 自动驾驶 |汽车转向角控制算法
- Java压缩/解压缩字符串
- 凉经算法题反思 | 单调栈与DP二分法
- 终于有人把Docker讲清楚了!
- 飞天茅台超卖事故:Redis分布式锁请慎用!
- 算法集锦(24) | 自动驾驶 |高速公路行驶路径规划算法