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有一些空白字符,所以如果你使用linestrip()中删除空白字符,代码应该可以工作。

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 文件夹中?

常用python日期日志获取内容循环的代码片段

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

使用 Python 代码片段编写 LaTeX 文档

SoundPool 加载失败

Xamarin Android 片段库