基本的HTTP文件下载并保存到Python的磁盘?

我是Python的新手,我一直在通过这个网站上的问答,为我的问题的答案。 但是,我是一个初学者,我发现很难理解一些解决scheme。 我需要一个非常基本的解决scheme

有人可以解释一个简单的解决scheme,“通过http下载文件”和“将其保存到磁盘,在Windows中”,对我?

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

我想下载的文件大小不超过500 MB,是一个.gz压缩文件。如果有人可以解释如何提取压缩文件并利用其中的文件,那就太棒了!

这是一个部分的解决scheme,我从各种不同的答案写成:

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 这是我最喜欢的解决scheme之一,从通过urllib和python下载图片 。

这个例子使用urllib库,它将直接从一个源文件中检索文件。

如上所述:

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

EDIT:如果你仍然想要使用请求,看看这个问题或这一个 。

我使用wget 。

简单而好的图书馆,如果你想要的例子?

 import wget file_url = 'http://johndoe.com/download.zip' file_name = wget.download(file_url) 

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

四个方法使用wget,urllib和请求。

 #!/usr/bin/python import requests from StringIO import StringIO from PIL import Image import profile as profile import urllib import wget url = 'https://tinypng.comhttp://img.dovov.comsocial/website.jpg' def testRequest(): image_name = 'test1.jpg' r = requests.get(url, stream=True) with open(image_name, 'wb') as f: for chunk in r.iter_content(): f.write(chunk) def testRequest2(): image_name = 'test2.jpg' r = requests.get(url) i = Image.open(StringIO(r.content)) i.save(image_name) def testUrllib(): image_name = 'test3.jpg' testfile = urllib.URLopener() testfile.retrieve(url, image_name) def testwget(): image_name = 'test4.jpg' wget.download(url, image_name) if __name__ == '__main__': profile.run('testRequest()') profile.run('testRequest2()') profile.run('testUrllib()') profile.run('testwget()') 

testRequest – 4469882在20.236秒内调用函数(4469842原始调用)

testRequest2 – 8580函数调用(8574原始调用)在0.072秒

testUrllib – 3810函数调用(3775原始调用)在0.036秒

testwget – 3489函数调用0.020秒

另一个干净的方法来保存文件是这样的:

 import csv import urllib urllib.retrieve("your url goes here" , "output.csv")