SORU
22 Mayıs 2013, ÇARŞAMBA


Ne kadar büyük bir dosya indirmek için requests.py python ile?

Requests gerçekten güzel bir kütüphane. Yükleme büyük dosyaları (>için kullanmak istiyorum 1GB). Sorun Olası bölümleri okumam gerekiyor bellekteki tüm dosya tutmak için değil. Ve bu aşağıdaki kod ile ilgili bir sorun

import requests

def DownloadFile(url)
    local_filename = url.split('/')[-1]
    r = requests.get(url)
    f = open(local_filename, 'wb')
    for chunk in r.iter_content(chunk_size=512 * 1024): 
        if chunk: # filter out keep-alive new chunks
            f.write(chunk)
    f.close()
    return 

Nedense bu şekilde olmuyor. Hala bir dosyaya kaydedin önce belleğe yanıt yükler.

CEVAP
22 Mayıs 2013, ÇARŞAMBA


Değiştirilmesi gerektiğini anladım. Hile ile kurulmuşturstream = True(). Bu python sonra işlem bellek (30kb civarında statys ne olursa olsun yükleme dosyasının boyutu) emmek için durdu. @Danodonovan sen burada kullanım sözdizimi teşekkür ederim

def download_file(url):
    local_filename = url.split('/')[-1]
    # NOTE the stream=True parameter
    r = requests.get(url, stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024): 
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)
                f.flush()
    return local_filename

Bakın http://docs.python-requests.org/en/latest/user/advanced/#body-content-workflow daha fazla referans.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Canal de arkyoru

    Canal de ark

    18 Ocak 2007
  • Dylan Dubay

    Dylan Dubay

    10 Temmuz 2013
  • manadude21

    manadude21

    11 Mart 2008