按行读取文件

时间:2018-05-23 21:57:48

标签: python

我在S3存储桶中有一个名为data.dat的文件,该文件的内容为3行

fruit
javaisnotafruit
xyq

我正在以这种方式阅读s3

objectcontent = s3.get_object(Bucket="contents-bucket", Key=obj['Key'])
contentsins3 = objectcontent['Body'].read().decode('utf-8')
print(contentsins3)

当我print(contentsins3)时,我正在

fruit
javaisnotafruit
xyq

我有循环内容并读取每一行的代码,我该怎么做?

for i in contentsins3:
    print(i)

我如何逐行获取S3中的每一行?

2 个答案:

答案 0 :(得分:1)

正文是streaming,但是当你这样做时,你将它全部消耗到EOF:

objectcontent['Body'].read()

所以,不要这样做。代替:

import encodings
stream = encodings.utf_8.StreamReader(objectcontent['Body'])
for line in stream:
    ...

答案 1 :(得分:0)

这只是普通的字符串解析,无论存储如何。

回到python,对象contentsins3包含整个文件数据,以及 line break

您可以使用splitlines()来处理\n\r\n

for i in contentsins3.splitlines():
    print(i)