基本的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")