【发布时间】:2018-01-22 02:37:21
【问题描述】:
我正在尝试获取存储在 AWS 中的一个 S3 存储桶中的 pdf 文件,并获取它的一些元数据,例如页数和文件大小。我成功地从 S3 存储桶中获取了 pdf 文件,调用 print(obj) 时得到了这个
s3.Object(bucket_name='somebucketname', key='somefilename.pdf')
使用 PyPDF2.PdfFileReader() 时,我尝试使用原始文件、UTF-8 解码文件和 ISO-8859-1 解码文件。 ISO-8859-1 解码文件是唯一一个不会引发异常的文件,但是当尝试将其作为参数传递给 PdfFileReader 时出现错误,并且此回溯
Traceback (most recent call last):
File "s3_test.py", line 18, in <module>
pdfFile = PdfFileReader(parse3)
File "/usr/local/lib/python3.6/site-packages/PyPDF2/pdf.py", line 1081, in __init__
fileobj = open(stream, 'rb')
ValueError: embedded null byte
我是否使用了错误的编码类型来解码这个 pdf 文件,还是像 pdfFileReader 的第一个参数一样必须是文件路径?有没有更简单的方法来访问 S3 pdf 对象的元数据,而无需费劲儿地到达那里?
Python 脚本
import boto3
from PyPDF2 import PdfFileReader
s3 = boto3.resource('s3')
obj = s3.Object(bucket_name, itemname)
parse3 = obj.get()['Body'].read().decode("ISO-8859-1")
pdfFile = PdfFileReader(parse3)
【问题讨论】:
标签: python amazon-web-services pdf amazon-s3