用Python DictRead从S3读取csv文件

2024-06-07 07:52:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望编写Python代码,从S3读取csv文件,然后逐行遍历文件并使用每行中的值。下面的示例来自realpython.org网站我喜欢如何使用列标题名称(如row[“department”])选择行中的值。在

我试着用csv.DictReader()使用从S3存储桶中获取的csv文件,但当我打开文件with open(obj['Body'], mode='r') as csv_file:时,它返回invalid argument或{}

下面的代码可以处理从S3存储桶读取的csv文件吗?在

import csv

with open('employee_birthday.txt', mode='r') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print(f'Column names are {", ".join(row)}')
            line_count += 1
        print(f'\t{row["name"]} works in the {row["department"]} department, and was born in {row["birthday month"]}.')
        line_count += 1
    print(f'Processed {line_count} lines.')

Tags: 文件csv代码ins3modecountwith
1条回答
网友
1楼 · 发布于 2024-06-07 07:52:41

如错误消息所示,obj['Body']是一个StreamingBody对象。因为它是一个类似文件的对象,所以您应该将它传递给DictReader,而不是将其作为文件的路径打开,但是由于它以字节为单位返回流,DictReader需要文本流,所以可以改为将其包装在io.TextIOWrapper中:

import io
csv_reader = csv.DictReader(io.TextIOWrapper(obj['Body']))

相关问题 更多 >

    热门问题