Python文件下载失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python文件下载失败相关的知识,希望对你有一定的参考价值。
python新手并尝试下载NIST NVD JSON文件。我尝试了几种方法,但它只写了大约324字节的文件。如果我做一个实际上工作的文件,但有几个文件要下载。
我确实尝试调整chunk_size,但仍然无法获得1到6mb的zip文件下载
from requests import get
def download(url, filename):
response = get(url, stream = True)
with open(filename, "wb") as file:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
file.write(chunk)
print('Downloaded! ', filename)
with open('NVD_JSON_SOURCE_URLS.txt') as f:
for line in f:
filename = line.split('/')[-1]
url = line
download(url, filename)
输入工作,它开始下载,只是永远不会完成它们。很明显,我在这里失去了一些令人沮丧的简单但在2天后我没有接近。谢谢。
答案
我发现在Python中对于像这样的实例来说很麻烦。这种方法经常对我有用:
import requests
import shutil
def download_file(url, filename):
r = requests.get(url, stream=True)
with open(filename, 'wb') as f:
shutil.copyfileobj(r.raw, f)
这将整个文件流式传输到内存然后写入。所以不适用于大文件,但你只是谈论几个MB应该工作正常。
另一答案
我认为line
有一些空白字符,所以如果你使用line
从strip()
中删除空白字符,代码应该可以工作。
for line in f:
line = line.strip()
...
我测试了它,它对我有用。
另一答案
因为当您从.txt
文件中读取数据时,行末尾会有换行符。所以你应该在第一个中删除换行符。
from requests import get
def download(url, filename):
response = get(url, stream = True)
with open(filename, "wb") as file:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
file.write(chunk)
print('Downloaded! ', filename)
with open('NVD_JSON_SOURCE_URLS.txt') as f:
for line in f:
line = line.strip()
filename = line.split('/')[-1]
url = line
download(url, filename)
以上是关于Python文件下载失败的主要内容,如果未能解决你的问题,请参考以下文章
我在哪里更改此 Python 代码片段以将临时文件保存在 tmp 文件夹中?
Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段