你们都用Python实现了哪些办公自动化?

Python 能做的事情太多的!!!看看我是怎么玩的!

一、快速分享文件方便访问文件夹(局域网)

比如我最常用的,进入一个需要公开的目录,执行:

python -m SimpleHTTPServer 80

(用过的点赞!!简直不要太好用
Python中内置的一个简单http server,方便自己、别人用浏览器来访问你的文件目录。

二、昨天搞阿里云返现,本来要一千多人一个个核对,用Python半个小时写了个server,输入ID就能自助核验:

3. 自动定时发邮件

Python SMTP发送邮件 | 菜鸟教程​www.runoob.com图标
处理Excel、Word、PDF等常用办公软件,处理CSV文件和JSON数据,从Web抓取网络信息,批量处理大量图片,发送电子邮件和短信等等,用Python都可以轻松完成!
光说不练假把式,人邮君举几个有趣的、实用的例子一起看看叭~
1、从多个PDF中合并选择的页面
假定你有一个很无聊的任务,需要将几十个PDF 文档合并成一个PDF 文档。每一个文档都有一个封面作为第一页,但你不希望合并后的文档中重复出现这些封面。即使有许多免费的程序可以合并PDF,很多也只是简单地将文档合并在一起。
让我们来写一个Python 程序,定制需要合并到PDF 中的页面。
总的来说,程序需要完成以下任务。

  1. 找到当前工作目录中的所有PDF 文档。
  2. 按文档名排序,这样就能有序地添加这些PDF。
  3. 除了第一页之外,将每个PDF 的所有页面写入输出的文档。

从实现的角度来看,代码需要执行以下操作。

  1. 调用os.listdir(),找到当前工作目录中的所有文件,并去除非PDF 文档。
  2. 调用Python 的sort()列表方法,将文档名按字母排序。
  3. 为输出的PDF 文档创建PdfFileWriter 对象。
  4. 循环遍历每个PDF 文档,为它创建PdfFileReader 对象。
  5. 针对每个PDF 文档,循环遍历每一页,第一页除外。
  6. 将页面添加到输出的PDF。
  7. 将输出的PDF 写入一个文档,名为allminutes.pdf。

针对这个项目,打开一个新的文件编辑器窗口,将它保存为combinePdfs.py。
第 1 步:找到所有PDF 文档
首先,程序需要取得当前工作目录中所有带.pdf 扩展名的文档列表,并对它们排序。
让你的代码看起来像这样:

在#!行和介绍程序做什么的描述性注释之后,代码导入了os 和PyPDF2 模块①。os.listdir('.')调用将返回当前工作目录中所有文档的列表。代码循环遍历这个列表,将带有.pdf 扩展名的文档添加到pdfFiles 中②。然后,列表按照字典顺序排序,调用sort()时需要带有key/str.lower 关键字参数③。
代码创建了一个PdfFileWriter 对象,以保存合并后的PDF 页面④。最后,使用一些注释语句简要描述了剩下的程序。
第 2 步:打开每个PDF 文档
现在,程序必须读取pdfFiles 中的每个PDF 文档。在程序中加入以下代码:

针对每个PDF 文档,循环内的代码调用open(),以'wb'作为第二个参数,用读二进制的模式打开文档。open()调用会返回一个File 对象,它被传递给PyPDF2.PdfFileReader(),以创建针对那个PDF 文档的PdfFileReader 对象。
第 3 步:添加每一页
针对每个PDF 文档,程序需要循环遍历每一页,第一页除外。在程序中添加以下代码:

for 循环内的代码将每个Page 对象复制到PdfFileWriter 对象。要记住,你需要跳过第一页。因为PyPDF2 认为0 是第一页,所以循环应该从1 开始①,然后向上增长到pdfReader.umPages 中的整数,但不包括它。
第 4 步:保存结果
在这些嵌套的for 循环完成后,pdfWriter 变量将包含一个PdfFileWriter 对象,以合并所有PDF 的页面。最后一步是将这些内容写入硬盘上的一个文档。在程序中添加以下代码:

向open()传入'wb',以写二进制的模式打开PDF 文档allminutes.pdf。然后,将得到的File 对象传给write()方法,以创建实际的PDF 文档。调用close()方法,结束程序。
2、向会员发送会费提醒电子邮件
假定你一直“自愿”为“强制自愿俱乐部”记录会员会费。这确实是一项枯燥的工作,包括维护一个电子表格,记录每个月谁交了会费,并用电子邮件提醒那些没交的会员。你不必自己查看电子表格,而是向会费逾期的会员复制、粘贴和发送相同的电子邮件。
让我们用Python编写一个脚本,帮你完成任务。
在较高的层面上,下面是程序要完成的任务。

  1. 从Excel 电子表格中读取数据。
  2. 找出上个月没有交费的所有会员。
  3. 找到他们的电子邮件地址,向他们发送针对个人的提醒。

这意味着代码需要执行以下操作。

  1. 用openpyxl 模块打开并读取Excel 文档的单元格(处理Excel 文档参见第13 章)。
  2. 创建一个字典,包含会费逾期的会员。
  3. 调用smtplib.SMTP()、ehlo()、starttls()和login(),登录SMTP 服务器。
  4. 针对会费逾期的所有会员,调用sendmail()方法,发送针对个人的电子邮件提醒。

打开一个新的文件编辑器窗口,并保存为sendDuesReminders.py。
第 1 步:打开Excel 文件
假定用来记录会费支付的Excel 电子表格看起来如图 18-2 所示,放在名为duesRecords.xlsx的文件中。可以从异步社区本书对应页面下载该文件。该电子表格中包含每个成员的姓名和电子邮件地址。每个月有一列,用来记录会员的付款状态。在成员支付会费后,对应的单元格就记为paid。
该程序必须打开duesRecords.xlsx,通过读取sheet.max_column 属性,弄清楚最近一个月的列。
在文件编辑器窗口中输入以下代码:

记录会员会费支付的电子表格

导入openpyxl、smtplib 和sys 模块后,我们打开duesRecords.xlsx 文件,将得到的Workbook 对象保存在wb 中①。然后取得Sheet1,将得到的Worksheet 对象保存在sheet中②。既然有了Worksheet 对象,就可以访问行、列和单元格了。我们将最后一列保存在lastCol 中③,然后用行号1 和lastCol 来访问应该记录着最近月份的单元格。取得该单元格的值,并将其保存latestMonth 中④。
第 2 步:查找所有未支付会费的成员
一旦确定了最近一个月的列数(保存在lastCol 中),就可以循环遍历第一行(这是列标题)之后的所有行,看看哪些成员在该月会费的单元格中写着paid。如果会员没有支付会费,就可以从列1 和列2 中分别抓取成员的姓名和电子邮件地址。这些信息将放入unpaidMembers字典,它记录最近一个月没有交费的所有成员。将以下代码添加到sendDuesReminder.py 中:

这段代码设置了一个空字典unpaidMembers,然后循环遍历第一行之后所有的行①。对于每一行,最近月份的值保存在payment 中②。如果payment 不等于'paid',则第一列的值保存在name 中③,第二列的值保存在email 中④,将name 和email 添加到unpaidMembers 中⑤。
第 3 步:发送定制的电子邮件提醒
得到所有未付费成员的名单后,就可以向他们发送电子邮件提醒了。将下面的代码添加到程序中,但要代入你的真实电子邮件地址和提供商的信息:

调用smtplib.SMTP()并传入提供商的域名和端口,来创建一个SMTP 对象。调用ehlo()和starttls(),然后调用login(),并传入你的电子邮件地址和sys.argv[1](其中保存着你的口令字符串)。在每次运行程序时,将口令作为命令行参数输入,避免在源代码中保存口令。程序登录到你的电子邮件账户后,就应该遍历unpaidMembers 字典,向未支付会费的会员的电子邮件地址发送针对个人的电子邮件。将以下代码添加到sendDuesReminders.py:

这段代码循环遍历unpaidMembers 中的姓名和电子邮件。对于每个没有付费的成员,我们用最新的月份和成员的名称定制了一条消息,并保存在body 中。输出表示正在向这个会员的电子邮件地址发送电子邮件。然后调用sendmail(),向它传入地址和定制的消息。返回值保存在sendmailStatus 中。
回忆一下,如果SMTP 服务器在发送某个电子邮件时报告错误,sendmail()方法将返回一个非空的字典值。for 循环的最后部分在④行检查返回的字典是否非空,如果非空,则输出收件人的电子邮件地址以及返回的字典。
程序完成发送所有电子邮件后,调用quit()方法,与SMTP 服务器断开连接。
如果运行该程序,输出结果会像这样:

收件人会收到一封关于他们未支付会费的邮件,看起来就像你手动发送的邮件一样。

福利来了~

为了帮助大家迅速建立测试思维能力,早日斩获大厂Offer、掌握职场话语权,下面这份《软件测试全栈学习路线图》应该会对你很有帮助

从测试概念到最后的测试开发,希望大家能照着这个体系,在3-4年内完成这样一个体系的构建,可以说,这个过程会让你痛不欲生,但只要你熬过去了,以后的生活就会轻松很多,正所谓完事开头难,只要迈出了第一步,你就已经成功了一半,古人说的好:不积跬步无以至千里,等到完成之后在回顾这段路程的时候,你肯定会感慨良多,掌握了以上技术,在任何一线互联网大厂测试岗位都能独挡一面

下面是一些配套的资源,希望能帮到大家

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

关注我的微信公众号:【程序员小濠】免费获取~

我的学习交流群:175317069 群里有技术大牛一起交流分享~

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值