gpt4 book ai didi

python - Boto3 逐行从 S3 键读取文件内容

转载 作者:行者123 更新时间:2023-12-03 16:05:08 26 4
gpt4 key购买 nike

使用 boto3,您可以从 S3 中的某个位置读取文件内容,并给出存储桶名称和 key (假设初步 import boto3 )

s3 = boto3.resource('s3')

content = s3.Object(BUCKET_NAME, S3_KEY).get()['Body'].read()

这将返回一个字符串类型。我需要获取的特定文件恰好是一组类似字典的对象,每行一个。所以它不是 JSON 格式。我不想将其作为字符串读取,而是将其作为文件对象流式传输并逐行读取;除了首先在本地下载文件之外,找不到其他方法来执行此操作
s3 = boto3.resource('s3')

bucket = s3.Bucket(BUCKET_NAME)

filename = 'my-file'
bucket.download_file(S3_KEY, filename)

f = open('my-file')

我要问的是是否可以对文件进行这种类型的控制,而不必先在本地下载它?

最佳答案

我发现 .splitlines() 对我有用...

txt_file = s3.Object(bucket, file).get()['Body'].read().decode('utf-8').splitlines()

如果没有 .splitlines() 整个文本块被返回并尝试迭代每一行导致每个字符被迭代。使用 .splitlines() 逐行迭代是可以实现的。

在我的示例中,我遍历每一行并将其编译成一个 dict。
txt_file = s3.Object(bucket, file).get()['Body'].read().decode(
'utf-8').splitlines()

for line in txt_file:
arr = line.split()
print(arr)

关于python - Boto3 逐行从 S3 键读取文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47558588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com