2014-11-12 18 views
27

Python BytesIO sınıfını denemek istedim.Sonra yazma, bellek içi bayt (BytesIO) okuma boş bir sonuç verir

Bir deneme olarak, bellekteki bir zip dosyasına yazmayı ve ardından baytı bu zip dosyasından geri okumaya çalıştım. Yani bir dosya nesnesini gzip'a iletmek yerine, bir BytesIO nesnesini geçiriyorum. İşte tüm script:

from io import BytesIO 
import gzip 

# write bytes to zip file in memory 
myio = BytesIO() 
g = gzip.GzipFile(fileobj=myio, mode='wb') 
g.write(b"does it work") 
g.close() 

# read bytes from zip file in memory 
g = gzip.GzipFile(fileobj=myio, mode='rb') 
result = g.read() 
g.close() 

print(result) 

Ama result için boş bytes nesneyi geri dönüyor. Bu Python 2.7 ve 3.4 hem de olur. Neyi kaçırıyorum? Hafıza dosyasında baş harfini yazdıktan sonra geri Dosyanın başına seek gereken

cevap

44

...

myio.seek(0) 
+0

teşekkürler! Öyleydi! – twasbrillig

+2

Matplotlib savefig() ile doldurulmuş tamponlar, bir uygulama sunucusu tarafından gönderilmeden önce buna da ihtiyaç duyarlar. Araştırma saatlerini bitirdiğiniz için teşekkürler! – TomTom101