python - 为电子邮件附件创建文件路径
问题描述
使用 Python 3 和 Pi4,我生成 .csv 文件,其名称基于时间和日期;例如:0715200732.csv
。
我想将此文件作为电子邮件的附件发送。在发送电子邮件和附件时,如果我将文件路径和文件名明确描述为,例如:
fname = 0715200715
filename = "/home/pi/data/0715200715.csv" # followed by
attachment = open(filename,'rb')
收到的电子邮件将附件显示为 Excel 文件,可以直接用 Excel 打开。
但是,如果我尝试通过使用“构建”路径,例如,
fname = 0715200715
path = os.path.dirname('/home/pi/data/')
filename = os.path.join(path, fname + '.csv')
attachment = open(filename, 'rb')
收到的电子邮件中的附件仅显示为“邮件附件”,缺少 .csv 扩展名。我必须用 .csv 扩展名重命名文件才能用 Excel 打开它。
我尝试了数十种不同的方法来创建文件名,以便收到的电子邮件的附件显示为 .csv 文件,但均未成功。
解决方案
我认为您在创建路径时犯了一个小错误,这可能会弄乱邮件附件
当你说
path = os.path.dirname('/home/pi/data')
路径 = '/home/pi' 不是 '/home/pi/data'
因此,当您使用文件名 .join 时,会生成错误的路径。
你应该得到一个OSError
未找到的文件。您没有向我表明您的代码中发生了此示例中缺少的其他事情这一事实。如果您需要更多帮助,请提供更多代码。干杯
推荐阅读
- asp.net - 如何从 RDLC 报告中的数据集中获取一组特定单元格
- excel - 有没有办法在 Visual Basic 中编辑 excel VBA 宏
- sql - SQL 代码风格。我应该使用 INNER 关键字吗
- boost - BOOST_INCLUDEDIR 和 BOOST_LIBRARYDIR 不同时的 find_package(Boost) 错误
- python - 即使传入的 object.attribute 不存在,如何让 get_or_create() 保存对象
- google-apps-script - 如何在谷歌脚本中阅读收件箱中的所有邮件?
- python - Web Scraping - 从 href 递归调用链接,遍历存储数据
- python - 如何在 python 中从 Web 下载 xlsx 文件
- java - CodecNotFoundException:未找到请求操作的编解码器:['org.apache.cassandra.db.marshal.ByteType' <-> byte]
- android - 通过恢复下载使用 Azure 存储下载文件