1. 程式人生 > >python實現斷點續傳下載檔案

python實現斷點續傳下載檔案

最近的任務裡有一個功能是要我從日誌伺服器實時跟新日誌到本地,日誌在不斷新增內容就需要我隔一段時間從上次下載的位置繼續下載,並寫入本地檔案上次寫完的位置後面。

                headers = {'Range': 'bytes=%d-' % local_file_dict.get(packet_path+k)}
                web_log = requests.get(packet_web_path+k, stream=True, headers=headers)
                with open(packet_path+k, 'ab') as local_file:
                    for chunk in web_log.iter_content(chunk_size=1024):
                        if chunk:
                            local_file.write(chunk)
                            local_file.flush()

這裡用的是requests.get()和他的一些引數
requests.get(url, stream=True, headers=headers)
要實現斷點續傳,get()的stream引數要設為True在遠端開啟的是一個流,而headers裡放的是續傳的一些引數,這裡的
headers = {'Range': 'bytes=%d-' % local_file_size}
就是獲得本地檔案的大小作為續傳的起點,還有就是按bytes

然後以

iter_content(chunk_size=xxx)

的方式逐chunk_size地遍歷資料,並寫入local_file

local_file.flush()

重新整理也很重要,實時保證一點點的寫入。