python - 自动选择今天最后创建的文件并发送电子邮件
问题描述
我想制作一个自动电子邮件脚本,它会自动附加给定文件夹中的某个文件并通过电子邮件发送该文件。
我试过这个文件,我在电子邮件脚本中手动附加文件。我不想编辑代码,每次发送电子邮件时都重命名文件。对于发送的自动电子邮件,我在 python 中使用yagmail模块。[注:使用Windows系统]
在 myproject/Attendance 目录中,有四个文件。这是文件名和列表。
myproject\Attendance\Attendance_2019-08-22_00-38-17.csv
myproject\Attendance\Attendance_2019-08-24_13-34-43.csv
myproject\Attendance\Attendance_2019-08-24_14-11-44.csv
myproject\Attendance\Attendance_2019-08-24_14-44-53.csv
代码片段
import yagmail
receiver = "mygmail@gmail.com" # receiver email address
body = "Attendence File" # email body
filename = "Attendance\Attendance_2019-08-24_13-34-43.csv" # attach the file
# mail information
yag = yagmail.SMTP("mygmial@gmail.com", "mypassword")
# sent the mail
yag.send(
to=receiver,
subject="Attendance Report", # email subject
contents=body, # email body
attachments=filename, # file attached
)
我想选择最后创建的考勤文件并自动附加在电子邮件中。例如,这里在出勤目录中创建了最后一个文件,名为"Attendance_2019-08-24_14-44-53.csv"。该文件将被选中并附在电子邮件中。
谢谢,提前。
解决方案
os.listdir
将为您获取目录中的所有文件名。根据“最后创建”的语义,您可以执行以下任一操作:
- 对文件名进行排序:看起来它们是常规格式。整理顺序中的第一个是最近的日期。
- 使用
os
命令能力查询每个文件的实际创建日期。保留最新的创建日期和文件名。
请注意,它可以更直接:发出系统命令以按时间顺序列出文件,然后简单地从返回的列表中取出最后一个文件。对于 UNIX(包括 Linux),这将是ls -ltr Attendance*
.
推荐阅读
- c# - SSIS 包平面文件目标
- google-app-maker - Google App Maker html 模板中的表格格式
- python - 将傅里叶变换从 C++ 转换为 Python,数组问题
- latex - 在 /ifthenelse 块中包含使用 minted 包的代码在 LATEX 中不起作用
- javascript - 尝试为 BINGO 游戏生成和显示非重复随机值
- sql - SQL ANSI:如何对 4 个表应用“除法运算”?
- c# - 如何让这个结构与 c# 一起工作?
- apollo - Apollo GraphQL 客户端不会在查询中返回缓存的嵌套类型
- javascript - 在Vue路由器中,为什么会发生这种情况?this$1.pending !== 路线
- json - 如何使用 Alamofire 使用 JSON 数据填充我的对象数组