在 Python 的 S3 存储桶中打开.docx文件 (Boto3)

在我们的一个 S3 存储桶中,我们有一个.docx文件,其中包含邮件合并字段。


我试图做的是直接从存储桶中直接读取它,而无需先在本地下载它!


通常,我可以打开一个文件,并通过使用以下代码查看其中的邮件合并字段:


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

但是,当我尝试将变量传递给 Mailmerge 函数时,我得到了另一个错误:contents


document = MailMerge(contents)

print(document.get_merge_fields())

我得到的错误是:ValueError: embedded null character


FFIVE
浏览 156回答 1
1回答

喵喵时光机

我假设你正在使用文档邮件合并 ·搜狐.文档非常稀疏,但是显示 ,这表明它需要文件的名称,而不是文件的“内容”。MailMerge('input.docx')在查看代码时,它似乎在调用库来打开zip文件。底线:如前所述,它需要文件的名称,而不是文件的内容。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python