2010-03-09 8 views
6

olarak dönmek için, bu defa ne var ise pythonic yeterli mi? Bunu yapmanın daha iyi bir yolu var mı?Fonksiyon bellek içi zip dosyası oluşturmak ve http yanıtı ben diskteki dosyaların oluşturulmasını kaçınarak am

Teşekkürler!

+0

Eğer bu doğruysa ya da değil, sadece ne yapması gerektiğini bildiğinden beri diyebilirsiniz :) Elegance özneldir, ancak bazı boşluklarla gerçekten yapabilir ve belki birden fazla işleve bölünmekten faydalanabilir. Ayrıca, muhtemelen dosyanın hatalarla kapandığından emin olmak isteyeceksiniz, bunu son olarak veya 'with'-statement ile yapabilirsiniz. – Skurmedel

+2

Genelde, sıkıştırılmış oldukları için JPEG'leri sıkıştırmak istemediğinizi belirtmek isterim. – Gabe

cevap

12

StringIO için, sonucu almak için genellikle o.getvalue() kullanmalısınız. Ayrıca, zip dosyasına normal bir dosya eklemek isterseniz, zf.write('picture.jpg')'u kullanabilirsiniz. Manuel olarak okumak zorunda değilsiniz.

4

Disk dosyalarından kaçınmak sunucunuzu bir taramayla yavaşlatabilir, ancak kesinlikle çalışır.

Bu isteklerin çoğunu aynı anda çalıştırıyorsanız belleği tüketirsiniz.

+0

@ S.Lott, merak ediyorum, burada bellek tüketen tek endişe mi? Tmp dosyalarını diske yazmaktan kaçınmanın daha hızlı olacağını düşünürdüm. Teşekkürler. – Mark

+1

Geçici dosyalar diske vurmak zorunda değildir (özellikle Linux'ta). –

+3

@Mark: Ölçülene kadar bilmezsiniz. Ancak, genel olarak, web sunucuları (1) soket I/O bağlı ve daha sonra yeterli soket bant genişliği varsa (2) bellek bağlıdır. Disk G/Ç nadiren bir değerlendirmedir; İstemci tarayıcısı genellikle en yavaş şeydir; Büyük bir bellek işlemi, istemci tarayıcının akışı kabul etmesini beklemek için büyük miktarda bellek yığınını bağlar. Kötü politika –

İlgili konular