我可以从 AWS S3 密钥创建 python 可迭代对象吗?
Can I create a python iterable object from an AWS S3 key?
我正在尝试使用第三方实用程序来处理来自可迭代对象的数据,例如队列或文件。我需要通过这个实用程序推送一堆 AWS S3 文件。每个都是包含 JSON 条消息的文本文件,每行一条完整消息。
一种方法是使用 key.get_contents_to_filename()
制作每个文件的本地副本,然后打开本地文件进行读取并将文件对象传递给实用程序,然后在完成后删除本地副本。但我尽量避免在本地下载文件,而更喜欢直接从 S3 读取文件。是否可以直接从 S3 密钥创建可迭代对象?
有一个 key.get_contents_as_string
方法,您可能 将 加载到 io.StringIO
或 io.BytesIO
。
>>> import io
>>> bt = io.BytesIO('abc\ndef\nghi')
>>> st = io.StringIO(u'abc\ndef\nghi')
>>> for thing in st:
print thing
abc
def
ghi
>>> for thing in bt:
print thing
abc
def
ghi
>>>
我正在尝试使用第三方实用程序来处理来自可迭代对象的数据,例如队列或文件。我需要通过这个实用程序推送一堆 AWS S3 文件。每个都是包含 JSON 条消息的文本文件,每行一条完整消息。
一种方法是使用 key.get_contents_to_filename()
制作每个文件的本地副本,然后打开本地文件进行读取并将文件对象传递给实用程序,然后在完成后删除本地副本。但我尽量避免在本地下载文件,而更喜欢直接从 S3 读取文件。是否可以直接从 S3 密钥创建可迭代对象?
有一个 key.get_contents_as_string
方法,您可能 将 加载到 io.StringIO
或 io.BytesIO
。
>>> import io
>>> bt = io.BytesIO('abc\ndef\nghi')
>>> st = io.StringIO(u'abc\ndef\nghi')
>>> for thing in st:
print thing
abc
def
ghi
>>> for thing in bt:
print thing
abc
def
ghi
>>>