我正在努力找到正确的方法来读取和解析csv文件,以便输出文件中包含的行数
我试图弄清楚使用不同的方法,但我有点难过
import boto3, botocore, csv
s3 = boto3.resource('s3')
s3obj = s3.Object('mybucket','myfile')
with s3obj.get() as f:
reader=csv.reader(f,delimter=",")
data=list(reader)
row_count=len(date)
这显然不起作用,因为1,语法错误或数字2我不知道我在做什么 . 我正在引用这篇文章,并尝试使用s3实现它 .
而不是显式打开文件可以使用s3obj.get()在s3对象上执行csv.reader函数?
请原谅我仍然学习编程的无知,所以任何解释都会非常有帮助
3 回答
s3obj.get()
返回dict
响应 . 您必须从响应中获取Body
,即对象数据(StreamingBody) .但是这个StreamingBody只支持
read()
,它不支持csv.reader()
所需的迭代器协议 .通过在python中使用常规计数方法,我能够获得所需的结果:
以前的答案效果很好,但有时会出现以下错误:
如果是这样,请尝试: