SORU
30 EKİM 2012, Salı


Nasıl resim istekleri kullanarak indirmek için

Ve bir resmi web requests python kullanarak modül indir kurtarmaya çalışıyorum.

Burada kullanılan (işçi) kodu:

img = urllib2.urlopen(settings.STATICMAP_URL.format(**data))
with open(path, 'w') as f:
    f.write(img.read())

Burada (çalışmayan) yeni kodu kullanarak requests:

r = requests.get(settings.STATICMAP_URL.format(**data))
if r.status_code == 200:
    img = r.raw.read()
    with open(path, 'w') as f:
        f.write(img)

requests kullanmak yanıttan hangi özelliği hakkında bana yardım EDEBİLİR MİSİN?

CEVAP
30 EKİM 2012, Salı


Ya yanıt response.raw file object veya yineleme kullanabilirsiniz.

response.raw kullanmak nesne, varsayılan olarak, sıkıştırılmış yanıtları (GZİP veya deflate ile) decode yok dosya gibi. True (requests kontrolFalse bunu kendisi çözme ayarlar) decode_content özniteliği ayarlayarak zaten senin için açmak için zorlayabilir. Sonra shutil.copyfileobj() veri dosyası bir nesne için: Python akışı için kullanabilirsiniz

import requests
import shutil

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        r.raw.decode_content = True
        shutil.copyfileobj(r.raw, f)        

Yanıtı yinelemek için bir döngü; bu veriler bu aşamada tarafından sıkıştırılmış olmasını sağlar gibi yineleme kullanın:

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        for chunk in r:
            f.write(chunk)

Bu 128 bit veri yığınları okurum; eğer başka bir öbek boyutu daha iyi çalıştığını düşünüyorsanız, özel bir yığın boyutu ile Response.iter_content() method kullanımı:

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        for chunk in r.iter_content(1024):
            f.write(chunk)

İkili modda hedef dosya python ve senin için yeni satır deneyin çevirmiyor sağlamak için açmanız gerektiğini unutmayın. Biz de requests belleğe Resmin tamamını ilk yükleme yok ki stream=True ayarlayın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lancome USA

    Lancome USA

    30 HAZİRAN 2009
  • Maschine Tutorials

    Maschine Tut

    15 ŞUBAT 2011
  • SolidWorksTutoriels

    SolidWorksTu

    14 Kasım 2013