【发布时间】:2019-09-14 00:57:02
【问题描述】:
我希望编写 Python 代码,从 S3 读取 csv 文件,然后逐行浏览文件并使用每行中的值。下面的示例来自 realpython.org,我喜欢如何使用行 [“部门”] 之类的列标题名称来选择行中的值。
我尝试将 csv.DictReader() 与从我的 S3 存储桶中获取的 csv 文件一起使用,但是当我打开文件 with open(obj['Body'], mode='r') as csv_file: 时它返回 invalid argument 或 TypeError: expected str, bytes or os.PathLike object, not StreamingBody
以下代码是否适用于从 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.')
【问题讨论】:
-
您似乎正在尝试打开一个文本文档,但您使用的是 csv.DictReader - 这是您的问题。