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

时间:2022-10-09 17:47:43 | 浏览:272

处理Excel、Word、PDF等常用办公软件,处理CSV文件和JSON数据,从Web抓取网络信息,批量处理大量图片,发送电子邮件和短信等等,用Python都可以轻松完成!光说不练假把式,人邮君举几个有趣的、实用的例子一起看看叭~ #

处理Excel、Word、PDF等常用办公软件,处理CSV文件和JSON数据,从Web抓取网络信息,批量处理大量图片,发送电子邮件和短信等等,用Python都可以轻松完成!

光说不练假把式,人邮君举几个有趣的、实用的例子一起看看叭~

Python编程快速上手:让繁琐工作自动化 第2版

¥66.8

购买

1、从多个PDF中合并选择的页面

假定你有一个很无聊的任务,需要将几十个PDF 文档合并成一个PDF 文档。每一个文档都有一个封面作为第一页,但你不希望合并后的文档中重复出现这些封面。即使有许多免费的程序可以合并PDF,很多也只是简单地将文档合并在一起。

让我们来写一个Python 程序,定制需要合并到PDF 中的页面。

总的来说,程序需要完成以下任务。

    找到当前工作目录中的所有PDF 文档。

    按文档名排序,这样就能有序地添加这些PDF。

    除了第一页之外,将每个PDF 的所有页面写入输出的文档。

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

    调用os.listdir(),找到当前工作目录中的所有文件,并去除非PDF 文档。

    调用Python 的sort()列表方法,将文档名按字母排序。

    为输出的PDF 文档创建PdfFileWriter 对象。

    循环遍历每个PDF 文档,为它创建PdfFileReader 对象。

    针对每个PDF 文档,循环遍历每一页,第一页除外。

    将页面添加到输出的PDF。

    将输出的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编写一个脚本,帮你完成任务。

在较高的层面上,下面是程序要完成的任务。

    从Excel 电子表格中读取数据。

    找出上个月没有交费的所有会员。

    找到他们的电子邮件地址,向他们发送针对个人的提醒。

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

    用openpyxl 模块打开并读取Excel 文档的单元格(处理Excel 文档参见第13 章)。

    创建一个字典,包含会费逾期的会员。

    调用smtplib.SMTP()、ehlo()、starttls()和login(),登录SMTP 服务器。

    针对会费逾期的所有会员,调用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 服务器断开连接。

如果运行该程序,输出结果会像这样:

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

——

《Python编程快速上手 让繁琐工作自动化 第2版》中还有很多这样有意思又实用的例子,比如“简单的倒计时程序”、“生成随机的测验试卷文件”、“取得当前的天气数据”等等,步骤清晰,简单易用,各行各业的人都可以学习使用,真正实现零基础快速入门。

没有编程基础的同学也不用担心,本书就是一本面向初学者的Python编程实用指南。

本书的第一部分介绍了基本的Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。

这本经典畅销书也是刚刚在千呼万唤中出版了第2版,重磅升级以给大家带来更好的学习体验,更详细地介绍了解一下——

《豆瓣评分8.9,这本Python经典入门书成功破圈,文末福利》

相关资讯

大整理!程序员最爱的13个免费Python课程

全文共3070字,预计学习时长6分钟图片来源:Jefferson Santos/UnsplashPython如今无疑是全球最受欢迎的编程语言。它最大的好处,就是让越来越多的人通过它加入了编程的世界。近年来,Python的使用人数与日俱增,超

苹果力推大屏版iPhone,说白了还是利润优先

可能是小屏旗舰用户的呼声太大,iPhone 12/13系列推出了只有5.4英寸的mini版本,但苹果没想到小屏党只吹不买,mini版本销量一直不太好。今年,苹果决定砍掉小屏幕的mini版本,取而代之的是屏幕更大的Max版本。很早之前数码博主

苹果官方解读iPhone14/Plus

IT之家 9 月 8 日消息,Apple 今天宣布推出 iPhone 14 和 iPhone 14 Plus,在备受欢迎的 6.1 英寸显示屏基础上,新增 6.7 英寸显示屏;搭载全新双摄系统和车祸检测功能;具备 iPhone 最佳电池续航

4000元!iPhone新机爆款预定,侧面指纹来了

今年的iPhone 14系列的口碑可以说是两极分化,最受欢迎的是iPhone 14 Pro系列,而受冷落的自然还是iPhone 14标准版,前者好不容易改变了刘海屏设计,增加了灵动岛,还有4800万主摄、息屏显示等,而后者除了运行内存和12

「多图」八款iPhone详细规格参数对比你会买哪款?

你的钱准备好了吗?2018年款iPhone已经正式登场,在未来1年中你会挑选哪款iPhone陪伴你呢?如果目前已经拥有iPhone X是否有必要升级iPhone XS Max?现在是购买iPhone 7或者7 Plus的最佳时机?带着这些疑

12张图回顾12部iPhone苹果十年多少次改变世界

明天凌晨,我们将正式迎来今年的新iPhone(iPhone X/8/8 Plus),对于iPhone而言,今年已经是第十周年,下面我们一同来回顾这十年来的12款iPhone。(图片引自搜狐科技)

新机又来,历代iPhone回顾

苹果一年一度的手机发布会9月9日就亮相了,在我的印象里,自从iPhone4代开始,每一代的iPhone都会成为一代街机,当然这里的街机不是贬义词,因为无论是从外观,还是实用性还是逼格,iPhone都能满足。总觉得在中国,无论是月薪2000还

苹果手机很好用,但千万别乱买,目前这3款iPhone才是最值的

苹果手机非常的耐用相信iPhone用户都知晓,当目前为止,小编身旁还有很多在使用iPhone6、iPhone7,只不过最近他们都去换了一次电池,然后就像满血复活了一样,不过当下在售的iPhone手机有很多,但并不是每一款都值得入手,以下3款

12张图回顾12部iPhone十年带来多少变革

2017-09-12 05:45:00 作者:邓旭明天凌晨,我们将正式迎来今年的新iPhone(iPhone X/8/8 Plus),对于iPhone而言,今年已经是第十周年,下面我们一同来回顾这十年来的12款iPhone。(图片引自搜狐科

友情链接

SEO域名抢注宝宝起名网妈妈知道币圈玉溪新闻头条网瑞士名表官网贵港新闻头条网今日晋城php编程知识剧本杀剧本网黄河壶口瀑布戴森吹风机评测网夏威夷岛旅游龙潭古镇旅游网奶茶加盟网生肖虎运势网中医学知识网装修装潢资讯网燕之屋燕窝
python编程教学网-python数据库开发教程、python基础知识入门、python数据库编程入门、python语法基础、python下载安装教程、python下载手机版、python翻译器下载手机版、python翻译器代码、python语言翻译、python基础代码、python编程自学网。
python编程教学网 dadeji.cn ©2022-2028版权所有