kullanarak S3'ten bir .gz dosyasını akışa alındığında sonsuz döngü Boto kullanarak S3'ten bir .gz dosyası akışı gerçekleştirmeye çalışıyorum ve sıkıştırılmamış metin dosyasının satırları üzerinde yineleyin. Gizemli bir şekilde döngü asla sona ermez; Tüm dosya okunduğunda, yineleme dosyanın başında yeniden başlatılır.Boto
ı oluşturmak demek ve benzeri bir giriş dosyası yüklemek edelim şu:
> echo '{"key": "value"}' > foo.json
> gzip -9 foo.json
> aws s3 cp foo.json.gz s3://my-bucket/my-location/
ve aşağıdaki Python komut dosyasını çalıştırın:
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)
sonucudur:
b'{"key": "value"}\n'
b'{"key": "value"}\n'
b'{"key": "value"}\n'
...forever...
Bu neden oluyor? Sanırım kayıp olduğum çok temel bir şey olmalı.
+1: bu parlak. Aslında, sarıcınızı kullanarak, bir sıkıştırılmış S3 nesnesinden doğrudan bir DataFrame panda okuyabilirim. Teşekkürler! –
Güzel! Bu, aynı zamanda, benim için de baştan sona birleştirilmiş dosya sonu gibi tuhaf davranışlar sergileyen CSV yüklemelerine de eşit derecede uygundu. Boto'nun bu gibi şeyleri neden yaptığını bilmek isterim - çok büyük hatalar IMO – killthrush
Ayrıca bu çözümü bir içerik yöneticisi olarak çalıştırırken dikkat etmem de, bir 'kapat 'işlevini de uyguladım. Sadece self.key.close() 'ye 'kapat' deleğini verir. – killthrush