簡體   English   中英

在 Python (Boto3) 中打開 S3 存儲桶中的 .docx 文件

[英]Opening a .docx file in S3 bucket in Python (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

但是當我嘗試將contents變量傳遞給 Mailmerge 函數時,我收到另一個錯誤:

document = MailMerge(contents)
print(document.get_merge_fields())

我得到的錯誤是: ValueError: embedded null character

你正在使用docx-mailmerge · PyPI

該文檔非常稀疏,但顯示MailMerge('input.docx') ,這表明它需要文件的名稱,而不是文件的“內容”。

查看代碼時,它似乎正在調用一個庫來打開一個 zip 文件。

底線:正如所寫的,它需要文件的名稱,而不是文件的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM