Python - 如何读取从 S3 存储桶中检索到的 CSV 文件?

标签 python csv amazon-s3

S3 存储桶中有一个 CSV 文件,我想解析它并将其转换为 Python 中的字典。使用 Boto3,我调用了 s3.get_object(<bucket_name>, <key>)函数,它返回一个包含 "Body" : StreamingBody() 的字典显然包含我想要的数据的键值对。

在我的 python 文件中,我添加了 import csv以及我在网上看到的关于如何读取 csv 文件的示例,您传递文件名,例如:

with open(<csv_file_name>, mode='r') as file:
reader = csv.reader(file)

但是,我不确定如何从 StreamBody 检索 csv 文件名,如果可能的话。如果没有,有没有更好的方法让我用 Python 读取 csv 文件?谢谢!

编辑:想补充一点,我是在 AWS Lambda 中执行此操作的,并且在 Lambda 中使用 pandas 存在已记录的问题,所以这就是我想使用 csv 库而不是 pandas 的原因。

最佳答案

csv.reader 不需要文件。它可以使用遍历行的任何内容,包括文件和列表。

所以你不需要文件名。只需将 response['Body'] 中的行直接传递给阅读器即可。一种方法是

lines = response['Body'].read().splitlines(True)
reader = csv.reader(lines)

关于Python - 如何读取从 S3 存储桶中检索到的 CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46943166/

相关文章:

python - 因互相关而滞后?

mysql - 使用 CSV 更新 MySQL 表记录

java - 在 Java 中,选项卡的 "char"是什么?如何传递 "Charset"?

python - Pandas read_excel() 导入 xlrd 失败

python - Boto3获取S3存储桶的内容

amazon-web-services - 允许 CloudFront 访问 S3 源,同时还具有 S3 存储桶 阻止所有公共(public)访问?

python数据和非数据描述符

python - scapy 操作系统错误 : [Errno 9] Bad file descriptor

python - 使用scapy和netfilterqueue修改

python - 我们可以从 AWS S3 复制图像并将其写入 excel 文件(S3)而不使用 Python 在本地存储数据吗?