返回介绍

16.10 实践项目

发布于 2024-01-22 21:44:06 字数 1982 浏览 0 评论 0 收藏 0

作为实践,编程完成以下任务。

16.10.1 随机分配家务活的电子邮件程序

编写一个程序,接受一个电子邮件地址的列表,以及一个需要做的家务活列表,并随机将家务活分配给他们。用电子邮件通知每个人分配给他们的家务。如果你觉得需要挑战,就记录每个人之前分配家务活的记录,这样就可以确保程序不会向任何人分配上一次同样的家务活。另一个可能的功能,就是安排程序每周自动运行一次。

这里有一个提示:如果将一个列表传入random.choice()函数,它将从该列表中返回一个随机选择的项。你的部分代码看起来可能像这样:

chores = ['dishes', 'bathroom', 'vacuum', 'walk dog']
randomChore = random.choice(chores)
chores.remove(randomChore)     # this chore is now taken, so remove it

16.10.2 伞提醒程序

第11章展示了如何利用requests模块,从http://weather.gov/抓取数据。编写一个程序,在你早晨快醒来时运行,检查当天是否会下雨。如果会下雨,让程序用短信提醒你出门之前带好一把伞。

16.10.3 自动退订

编程扫描你的电子邮件账户,在所有邮件中找到所有退订链接,并自动在浏览器中打开它们。该程序必须登录到你的电子邮件服务提供商的IMAP服务器,并下载所有电子邮件。可以用BeautifulSoup(在第11章中介绍)检查所有出现unsubscribe(退订)的HTML链接标签。

得到这些URL的列表后,可以用webbrowser.open(),在浏览器中自动打开所有这些链接。

仍然需要手工操作并完成所有额外的步骤,从这些邮件列表中退订。在大多数情况下,这需要点击一个链接确认。

但这个脚本让你不必查看所有电子邮件,寻找退订链接。然后,可以将这个脚本转给你的朋友,让他们能够针对他们的电子邮件账户运行它(要确保你的邮箱密码没有硬编码在源代码中)。

16.10.4 通过电子邮件控制你的电脑

编写一个程序,每15分钟检查电子邮件账户,获取用电子邮件发送的所有指令,并自动执行这些指令。例如,BitTorrent是一个对等网络下载系统。利用免费的BitTorrent软件,如qBittorrent,可以在家用电脑上下载很大的媒体文件。如果你用电子邮件向该程序发送一个(完全合法的,根本不是盗版的)BitTorrent链接,该程序将检查电子邮件,发现这个消息,提取链接,然后启动qBittorrent,开始下载文件。通过这种方式,你可以在离开家的时候让家用电脑开始下载,这些(完全合法的,根本不是盗版的)下载在你回家前就能完成。

第15章介绍了如何利用subprocess.Popen()函数启动计算机上的程序。例如,下面的调用将启动qBittorrent程序,并打开一个torrent文件:

qbProcess = subprocess.Popen(['C:\\Program Files (x86)\\qBittorrent\\
qbittorrent.exe', 'shakespeare_complete_works.torrent'])

当然,你希望该程序确保邮件来自于你自己。具体来说,你可能希望该邮件包含一个密码,因为在电子邮件中伪造“from”地址,对黑客来说很容易。该程序应该删除它发现的邮件,这样就不会每次检查电子邮件账户时重复执行命令。作为一个额外的功能,让程序每次执行命令时,用电子邮件或短信给你发一条确认信息。因为该程序运行时,你不会坐在运行它的计算机前面,所以利用日志函数(参见第 10章)写文本文件日志是一个好主意,你可以检查是否发生错误。

qBittorrent(以及其他BitTorrent应用程序)有一个功能,下载完成后,它可以自动退出。第15章解释了如何用Popen对象的wait()方法,确定启动的应用程序何时已经退出。wait()方法调用将阻塞,直到qBittorrent停止,然后程序可以通过电子邮件或短信,通知你下载已经完成。

可以为这个项目添加许多可能的功能。如果遇到困难,可以从 http://nostarch. com/automatestuff/下载这个程序的示例实现。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文