【发布时间】:2015-08-20 22:55:04
【问题描述】:
我正在尝试使用 boto 从 S3 流式传输 .gz 文件并遍历解压缩文本文件的行。神秘的是,循环永远不会终止。当整个文件被读取后,迭代从文件的开头重新开始。
假设我创建并上传了一个输入文件,如下所示:
> echo '{"key": "value"}' > foo.json
> gzip -9 foo.json
> aws s3 cp foo.json.gz s3://my-bucket/my-location/
然后我运行以下 Python 脚本:
import boto
import gzip
connection = boto.connect_s3()
bucket = connection.get_bucket('my-bucket')
key = bucket.get_key('my-location/foo.json.gz')
gz_file = gzip.GzipFile(fileobj=key, mode='rb')
for line in gz_file:
print(line)
结果是:
b'{"key": "value"}\n'
b'{"key": "value"}\n'
b'{"key": "value"}\n'
...forever...
为什么会这样?我想一定有一些非常基本的东西我错过了。
【问题讨论】:
标签: python amazon-s3 gzip boto