我尝试使用附加的pdf文件解析电子邮件
def get_files(poruka):
pdfs = []
if poruka.is_multipart():
for part in poruka.get_payload():
if part.get_content_type() == 'application/pdf':
data = part.get_payload()
temppdf = tempfile.NamedTemporaryFile('w+b', -1)
temppdf.write(base64.b64decode(data))
pdfs.append(temppdf)
return pdfs
它有效,但在pdfs
我有文件实例。我尝试做的是将原始名称的文件保存在名为storage的文件夹中。
当我尝试open(temppdf, 'wb').write(temppdf.get_payload(decode=True))
时,我收到错误TypeError: coercing to Unicode: need string or buffer, instance found
。
另外如何获取pdfs [0] filename?
答案 0 :(得分:0)
第一个问题是您正在尝试打开文件对象而不是文件名。您可以尝试open(temppdf.name)
,但这可能不起作用(并非所有平台都不保证)。从Python 2.6开始,您可以在NamedTemporaryFile调用上指定delete=False
,然后打开temppdf.name
应该可以正常工作。