首页 > 解决方案 > 自动选择今天最后创建的文件并发送电子邮件

问题描述

我想制作一个自动电子邮件脚本,它会自动附加给定文件夹中的某个文件并通过电子邮件发送该文件。

我试过这个文件,我在电子邮件脚本中手动附加文件。我不想编辑代码,每次发送电子邮件时都重命名文件。对于发送的自动电子邮件,我在 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"。该文件将被选中并附在电子邮件中。

谢谢,提前。

标签: pythonpython-3.x

解决方案


os.listdir将为您获取目录中的所有文件名。根据“最后创建”的语义,您可以执行以下任一操作:

  1. 对文件名进行排序:看起来它们是常规格式。整理顺序中的第一个是最近的日期。
  2. 使用os命令能力查询每个文件的实际创建日期。保留最新的创建日期和文件名。

请注意,它可以更直接:发出系统命令以按时间顺序列出文件,然后简单地从返回的列表中取出最后一个文件。对于 UNIX(包括 Linux),这将是ls -ltr Attendance*.


推荐阅读