日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

python 下載文件的幾種方式分享

瀏覽:24日期:2022-06-23 09:39:42
1 、一般同步下載

示例代碼:

import requestsimport osdef downlaod(url, file_path): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0' } r = requests.get(url=url, headers=headers) with open(file_path, 'wb') as f: f.write(r.content) f.flush()2、 使用流式請求,requests.get方法的stream

默認(rèn)情況下是stream的值為false,它會立即開始下載文件并存放到內(nèi)存當(dāng)中,倘若文件過大就會導(dǎo)致內(nèi)存不足的情況,程序就會報錯。當(dāng)把get函數(shù)的stream參數(shù)設(shè)置成True時,它不會立即開始下載,當(dāng)你使用iter_content或iter_lines遍歷內(nèi)容或訪問內(nèi)容屬性時才開始下載,需要注意一點(diǎn):文件沒有下載之前,它也需要保持連接。

iter_content:一塊一塊的遍歷要下載的內(nèi)容iter_lines:一行一行的遍歷要下載的內(nèi)容

使用上面兩個函數(shù)下載大文件可以防止占用過多的內(nèi)存,因?yàn)槊看沃幌螺d小部分?jǐn)?shù)據(jù)。

示例代碼:

3 、異步下載文件

由于request的請求是阻塞式的,所以要用aiohttp模塊來發(fā)起請求。

示例代碼:

import aiohttpimport asyncioimport osasync def handler(url, file_path): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0' } async with aiohttp.ClientSession() as session: r = await session.get(url=url, headers=headers) with open(file_path, 'wb') as f: f.write(await r.read()) f.flush() os.fsync(f.fileno())loop = asyncio.get_event_loop()loop.run_until_complete(handler(url, file_path))4、 異步拆分下載文件

上面用的是一個協(xié)程下載一個文件,下面的方法是將文件分成幾部分,每個部分用一個協(xié)程下載,最后再寫入文件。

下面這個例子用的是流式寫入,即把內(nèi)容寫入到磁盤里面。

import aiohttpimport asyncioimport timeimport osasync def consumer(queue): option = await queue.get() start = option['start'] end = option['end'] url = option['url'] filename = option['filename'] i = option['i'] print(f'第{i}個任務(wù)開始運(yùn)行') async with aiohttp.ClientSession() as session: headers = {'Range': f'bytes={start}-{end}'} r = await session.get(url=url, headers=headers) with open(filename, 'rb+') as f: f.seek(start) while True:chunk = await r.content.read(end - start)if not chunk: breakf.write(chunk)f.flush()os.fsync(f.fileno())print(f'第{i}個任務(wù)正在寫入中ing') queue.task_done() print(f'第{i}個任務(wù)寫入成功')async def producer(url, headers, filename, queue, coro_num): async with aiohttp.ClientSession() as session: resp = await session.head(url=url, headers=headers) file_size = int(resp.headers['content-length']) # 創(chuàng)建一個文件 with open(filename, 'wb') as f: pass part = file_size // coro_num for i in range(coro_num): start = part * i if i == coro_num - 1:end = file_size else:end = start + part info = {'start': start,'end': end,'url': url,'filename': filename,'i': i, } queue.put_nowait(info)async def main(): # 需要填的有url,filename,coro_num url = '' filename = '' coro_num = 0 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0' } queue = asyncio.Queue(coro_num) await producer(url, headers, filename, queue, coro_num) task_list = [] for i in range(coro_num): task = asyncio.create_task(consumer(queue)) task_list.append(task) await queue.join() for i in task_list: i.cancel() await asyncio.gather(*task_list)startt = time.time()loop = asyncio.get_event_loop()loop.run_until_complete(main())end = time.time() - starttprint(f'用了{(lán)end}秒')5、注意

以上的示例都是介紹思路,程序并不健壯,健壯的程序需要加入錯誤捕獲和錯誤處理。

以上就是python 下載文件的幾種方式分享的詳細(xì)內(nèi)容,更多關(guān)于python 下載文件的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产资源在线观看入口av| 亚洲最新无码中文字幕久久| 视频精品一区| 日本а中文在线天堂| 精品国产一区二区三区噜噜噜| 国产午夜精品一区二区三区欧美 | 日韩中文字幕区一区有砖一区| 丝袜诱惑一区二区| 欧美成人精品午夜一区二区| 亚洲免费福利一区| 国产高清一区| 亚洲伊人av| 日韩一区二区三区在线看| 国产综合色产| 欧美日韩免费看片| 鲁鲁在线中文| 福利视频一区| 国产一区2区在线观看| 欧美日韩一区二区国产| 亚洲一区中文| 五月天久久久| 免费成人网www| 91九色精品国产一区二区| 久久激情中文| 亚洲综合在线电影| 一区二区三区四区日本视频| 国内揄拍国内精品久久| 在线看片日韩| 日韩国产一区二| 欧美色综合网| 麻豆国产精品777777在线| 国产精品啊啊啊| 国产精品乱战久久久| 国产精品jk白丝蜜臀av小说| 欧美日韩一区二区三区不卡视频| 欧美三区不卡| 精品香蕉视频| 亚洲女同av| 99精品视频在线| 久久中文字幕二区| 亚洲婷婷在线| 久久成人精品| 久久国产电影| 欧美专区在线| 日韩欧美在线精品| 国产美女视频一区二区| 免费一级欧美片在线观看网站 | 久久不射中文字幕| 天堂成人国产精品一区| 亚洲一区成人| 亚洲3区在线| 日韩免费精品| 国产精品第十页| 国产精品v日韩精品v欧美精品网站| 国产va免费精品观看精品视频| 国产精品成人国产| 精品欧美日韩精品| 亚洲第一精品影视| 男人的天堂亚洲一区| 久久激情五月婷婷| 精品日韩视频| 久久午夜精品一区二区| 国产午夜久久av| 亚洲高清二区| 日韩中文字幕av电影| 久久的色偷偷| 久久国产影院| 久久夜色精品| 老司机精品视频网| 久久一区视频| 国产精品多人| 99久久婷婷这里只有精品| 四虎精品一区二区免费| 日韩av二区| 老色鬼久久亚洲一区二区| 国产伦精品一区二区三区千人斩 | 日韩电影在线视频| 天堂av在线一区| 久久99高清| 久久精品导航| 国产欧美日韩亚洲一区二区三区| 欧美a在线观看| 国产手机视频一区二区| 国产一区二区三区天码| 日韩视频一区| 国产精品伦一区二区| 国产精品久久久久9999高清| 激情综合网站| 国产精品视频一区二区三区四蜜臂| 人人草在线视频| 亚洲精品少妇| 国内亚洲精品| 国产视频网站一区二区三区| 欧美99久久| 成人在线观看免费视频| 蜜臀精品一区二区三区在线观看| 国产欧美自拍| 免费的成人av| 久久国产日韩| 欧美一级精品| 日韩av网站免费在线| 欧美羞羞视频| 伊人精品视频| 91欧美极品| 日韩啪啪电影网| 欧美精品中文| 国内精品99| 久久影院一区二区三区| 另类国产ts人妖高潮视频| 麻豆国产精品视频| 青草国产精品| 日韩成人精品一区二区| 日本午夜精品久久久| 美国欧美日韩国产在线播放| 丝袜诱惑一区二区| 国产精品美女午夜爽爽| 亚洲aⅴ网站| 六月婷婷一区| 精品在线99| 精品美女在线视频| 91麻豆精品| 国产一区二区高清| 久久亚洲成人| 91精品韩国| 精品网站aaa| 久久伊人亚洲| 综合欧美亚洲| 热久久国产精品| 性色av一区二区怡红| 亚洲先锋成人| 日韩成人三级| 久久激情婷婷| 999国产精品永久免费视频app| 欧美精品日日操| 日韩高清成人| 国产中文一区| 亚洲va中文在线播放免费| 国产精品亚洲欧美日韩一区在线| 日韩中文字幕1| 久久免费高清| 亚洲香蕉网站| 国产精品成人一区二区不卡| 国产精品主播| 欧美aⅴ一区二区三区视频| 国产精品一区三区在线观看| 欧美日韩视频免费看| 国产精品一区二区三区av| 日本成人在线不卡视频| 欧美日韩日本国产亚洲在线| 91精品国产福利在线观看麻豆| 色爱综合网欧美| 国内揄拍国内精品久久| 黄色在线网站噜噜噜| 91欧美在线| 岛国av免费在线观看| 成人小电影网站| 欧美精品第一区| 国产69精品久久| www成人在线视频| 免费久久久久久久久| 久久精品亚洲欧美日韩精品中文字幕| 91精品亚洲| 欧美日韩第一| 激情综合亚洲| 国产亚洲精品v| 蜜桃av一区| 欧美亚洲国产日韩| 成人午夜在线| 久久蜜桃精品| 亚洲色图国产| 久久午夜影视| 亚洲精品福利| 国际精品欧美精品| 日韩av片子| 亚洲欧美在线综合| 国产精品jk白丝蜜臀av小说| jizzjizz中国精品麻豆| 男女激情视频一区| 国产日产精品_国产精品毛片 | 在线视频精品| 精品高清久久| 91高清一区| 日韩精品a在线观看91| 国产麻豆精品久久| 91精品电影| 欧美亚洲国产激情| 中文字幕高清在线播放| 88久久精品| 日韩在线成人| 国产精品欧美三级在线观看| 中文国产一区| 国产一区丝袜| 国产成人免费av一区二区午夜| 国产欧美一区二区三区米奇| 蜜桃视频免费观看一区| 日本综合视频| 国产精品一区二区精品 | 国产精品久久久久久模特| 免费在线亚洲| 成人免费网站www网站高清|