用python下载基本的http文件并保存到磁盘?

我是Python的新手,我一直在浏览这个网站上的Q&A,希望得到问题的答案。然而,我是个初学者,我发现很难理解一些解决方案。我需要一个非常基本的解决方案。

谁能给我解释一下通过http下载文件和在Windows中把文件保存到磁盘的简单解决方案?

我也不知道如何使用shutil和os模块。

我想下载的文件不到500MB,是一个.gz档案文件。如果有人能解释如何提取档案并利用其中的文件,那就太好了!

这里有一个部分解决方案,是我根据各种答案综合写的。

import requests
import os
import shutil

global dump

def download_file():
    global dump
    url = "http://randomsite.com/file.gz"
    file = requests.get(url, stream=True)
    dump = file.raw

def save_file():
    global dump
    location = os.path.abspath("D:\folder\file.gz")
    with open("file.gz", 'wb') as location:
        shutil.copyfileobj(dump, location)
    del dump

谁能指出错误(初级水平)并解释一下有什么更简单的方法吗?

谢谢!

解决办法

下载文件的一个干净的方法是。

import urllib

testfile = urllib.URLopener()
testfile.retrieve("http://randomsite.com/file.gz", "file.gz")

这是从一个网站上下载一个文件,并将其命名为 "file.gz"。这是我最喜欢的解决方案之一,来自https://stackoverflow.com/questions/3042757/downloading-a-picture-via-urllib-and-python。

这个例子使用了urllib库,它将直接从源文件中获取文件。

评论(8)

如前所述这里

import urllib
urllib.urlretrieve ("http://randomsite.com/file.gz", "file.gz")

编辑:如果你还想使用请求,请看一下这个问题这个问题

评论(6)

我使用wget

简单而好的库,如果你想举例的话?

import wget

file_url = 'http://johndoe.com/download.zip'

file_name = wget.download(file_url)

wget模块支持python 2和python 3版本

评论(0)