如何在提取MSG邮件附件时重命名并添加日期后缀?
解决MSG附件重命名并添加邮件日期的问题
要实现给附件添加邮件日期重命名,你需要正确拆分原附件文件名、构造新文件名,并在save()方法中正确传入filename参数。以下是修改后的代码:
import extract_msg import dateutil.parser as dparser from os.path import join, splitext email_path = ... # 邮件文件存放路径 save_path = ... # 附件保存路径 for file in files: path = join(email_path, file) msg = extract_msg.Message(path) # 解析邮件日期并格式化(避免文件名含非法字符) date = dparser.parse(msg.date).strftime("%m-%d-%Y") for f in msg.attachments: # 拆分原文件名的名称和扩展名 original_name, ext = splitext(f.longFilename) # 构造新文件名:原名称_日期.扩展名 new_filename = f"{original_name}_{date}{ext}" # 保存时指定自定义路径和新文件名 f.save(customPath=save_path, filename=new_filename)
关键说明:
- 使用
splitext()拆分原文件名,确保保留正确的文件扩展名 - 直接用
strftime("%m-%d-%Y")生成日期格式,无需额外替换/,更简洁 save()方法的filename参数需要传入完整的新文件名(含扩展名),才能覆盖原文件名- 优先使用
f.longFilename获取附件的完整文件名,比shortFilename更准确
内容的提问来源于stack exchange,提问作者chicagobeast12
相关产品推荐
相关产品推荐

