在我们的一个S3存储桶中,有一个.docx文件,其中包含邮件合并字段
我想做的是直接从bucket中读取它,而不需要先在本地下载它
通常,我可以通过使用以下代码打开文件并查看其中的邮件合并字段:
from mailmerge import MailMerge
document = MailMerge(r'C:\Users\User\Desktop\MailMergeFile.docx') # Trying to get a variable to pass in here
print(document.get_merge_fields())
如上所述,我试图以一种方式获取对象,在这种方式下,我可以将其传递给MailMerge方法,就像我在本地机器上传递路径一样
我所仰望的方法没有起作用
fileobj = s3.get_object(
Bucket='bucketname',
Key='folder/mailmergefile.docx'
)
word_file = fileobj['Body'].read()
contents = word_file.decode('ISO-8859-1') # can't use utf-8 as that gives encoding error
contents
但是,当我尝试将contents
变量传递给Mailmerge函数时,我得到了另一个错误:
document = MailMerge(contents)
print(document.get_merge_fields())
我得到的错误是:
ValueError: embedded null character
我猜你正在使用docx-mailmerge · PyPI
文档非常稀疏,但显示为
MailMerge('input.docx')
,这表明它需要的是文件名,而不是文件的“内容”在looking at the code中,它似乎在调用一个库来打开一个zip文件
底线:如前所述,它需要的是文件名,而不是文件内容
相关问题 更多 >
编程相关推荐