пятница, 8 июня 2012 г.

Python 101: Как скачать файл


Скачивание файлов из интернета - это, наверно, та задача, с которой рано или поздно сталкивается любой программист. Самый популярный способ сделать это - использовать модули urllib или urllib2 для работы через http. Кроме этого у Вас есть модуль для работы с ftp. Наконец, у Вас есть сторонний модуль под названием request. В этой статье мы посмотрим как работать с модулями для http.
Так как это достаточно простая задача, то мы лишь сделаем маленький скрипт который загружает один и тот же zip файл тремя разными способами. Давайте посмотрим:

import urllib
import urllib2
import requests

url = 'http://www.blog.pythonlibrary.org/wp-content/uploads/2012/06/wxDbViewer.zip'

print "downloading with urllib"
urllib.urlretrieve(url, "code.zip")

print "downloading with urllib2"
f = urllib2.urlopen(url)
data = f.read()
with open("code2.zip", "wb") as code:
    code.write(data)

print "downloading with requests"
r = requests.get(url)
with open("code3.zip", "wb") as code:
    code.write(r.content)


Как Вы можете видеть, urllib требует всего одной строки, его достаточно легко использовать. С другой стороны и два других способа не сильно сложнее. Для urllib2 Вам надо открыть url, затем прочитать его и записать данные в файл. На самом деле, Вы можете сократить количество кода на одну строку:

f = urllib2.urlopen(url)
with open("code2.zip", "wb") as code:
code.write(f.read())

В любом случае это работает. Метод для чтения называется get, что соответствует HTTP GET. Мы получаем данные и затем записываем их при помощи менеджера контекста (выражения with), что позволяет нам автоматически закрыт файл и опять же сократить код.

Я думаю, что код можно сделать ещё короче, если уж извращаться (хотя сам не проверял):
with open("code2.zip", "wb") as code:
code.write(urllib2.urlopen(url).read())


Вот так всё просто. Теперь Вы можете легко скачивать файлы при помощи Python.

Что почитать по теме:



Источник

Комментариев нет:

Отправить комментарий