首页 > 解决方案 > 为电子邮件附件创建文件路径

问题描述

使用 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 文件,但均未成功。

标签: pythonpython-3.xfilepathemail-attachments

解决方案


我认为您在创建路径时犯了一个小错误,这可能会弄乱邮件附件

当你说

path = os.path.dirname('/home/pi/data')

路径 = '/home/pi' 不是 '/home/pi/data'

因此,当您使用文件名 .join 时,会生成错误的路径。

你应该得到一个OSError未找到的文件。您没有向我表明您的代码中发生了此示例中缺少的其他事情这一事实。如果您需要更多帮助,请提供更多代码。干杯


推荐阅读