python用request下载大文件,遇到MemoryError 解决方法
2021/12/12 9:18:03
本文主要是介绍python用request下载大文件,遇到MemoryError 解决方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
res = requests.get(url=url,headers=headers, stream=True) total_size = int(res.headers['Content-Length']) size_mb = total_size/1048576 print("文件大小为:",round(size_mb,2),"MB") with open(os.path.join(path,dirname,filename),'wb') as fw: for data in res.iter_content(chunk_size=1024*1024*10): size = size + 10 if size >1024: print("已经下载",size/1024,"GB,完成",round(100*size/size_mb,2),"%") else: print("已经下载",size,"MB,完成",round(100*size/size_mb,2),"%") fw.write(data) fw.flush() os.fsync(fw.fileno())
下载一些文件,每次遇到大于600MB的就容易出现MemoryError错误,经过查询改进如上
可以强制每下载10MB就从内存保存到硬盘,彻底解决内存不足的问题,顺便显示下载进度
只加f.flush(),文件还是会一直在内存中,后面加os.fsync(f.fileno()),就会强制清除缓存至硬盘了。因为网络稳定,故无需加断点续传的功能了
参见:
https://stackoverflow.com/questions/16694907/download-large-file-in-python-with-requests
https://www.runoob.com/python/file-fileno.html
https://www.yiibai.com/python/os_fsync.html
这篇关于python用request下载大文件,遇到MemoryError 解决方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python
- 2024-03-12python colon equals