第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在python中下載帶有請(qǐng)求的大型文件

在python中下載帶有請(qǐng)求的大型文件

慕妹3242003 2019-06-19 16:57:41
在python中下載帶有請(qǐng)求的大型文件請(qǐng)求是個(gè)很好的圖書館。我想用它來下載大文件(>1GB)。問題是不可能將整個(gè)文件保存在內(nèi)存中,我需要以塊的形式讀取它。下面的代碼出現(xiàn)了問題import requestsdef 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因?yàn)槟撤N原因它不是這樣工作的。在將響應(yīng)保存到文件之前,它仍然會(huì)將響應(yīng)加載到內(nèi)存中。更新如果您需要一個(gè)可以從FTP下載大文件的小客戶機(jī)(Python2.x/3.x),您可以找到它這里..它支持多線程和重新連接(它確實(shí)監(jiān)視連接),還為下載任務(wù)調(diào)優(yōu)套接字參數(shù)。
查看完整描述

3 回答

?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

如果你用Response.rawshutil.copyfileobj():

import requestsimport shutildef download_file(url):
    local_filename = url.split('/')[-1]
    with requests.get(url, stream=True) as r:
        with open(local_filename, 'wb') as f:
            shutil.copyfileobj(r.raw, f)

    return local_filename

這將文件流到磁盤,而不使用過多的內(nèi)存,代碼很簡(jiǎn)單。


查看完整回答
反對(duì) 回復(fù) 2019-06-19
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

您的塊大小可能太大了,您是否嘗試過一次刪除1024字節(jié)?(還有,你可以用with整理語法)

def DownloadFile(url):
    local_filename = url.split('/')[-1]
    r = requests.get(url)
    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)
    return

順便提一句,您是如何推斷響應(yīng)已加載到內(nèi)存中的?

聽起來好像python沒有從其他地方刷新要文件的數(shù)據(jù)。所以問題你可以試試f.flush()os.fsync()強(qiáng)制文件寫入和釋放內(nèi)存;

    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()
                os.fsync(f.fileno())


查看完整回答
反對(duì) 回復(fù) 2019-06-19
  • 3 回答
  • 0 關(guān)注
  • 1414 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)