Código fuente para pydatajson.download

# -*- coding: utf-8 -*-

"""Módulo 'download' de pydatajson

Contiene métodos para descargar archivos a través del protocolo HTTP.
"""

from __future__ import unicode_literals, print_function, with_statement
from __future__ import absolute_import

import requests
import time
import sys

DEFAULT_TRIES = 1
RETRY_DELAY = 1


[documentos]def download(url, tries=DEFAULT_TRIES, retry_delay=RETRY_DELAY, try_timeout=None, proxies=None, verify=True): """ Descarga un archivo a través del protocolo HTTP, en uno o más intentos. Args: url (str): URL (schema HTTP) del archivo a descargar. tries (int): Intentos a realizar (default: 1). retry_delay (int o float): Tiempo a esperar, en segundos, entre cada intento. try_timeout (int o float): Tiempo máximo a esperar por intento. proxies (dict): Proxies a utilizar. El diccionario debe contener los valores 'http' y 'https', cada uno asociados a la URL del proxy correspondiente. Returns: bytes: Contenido del archivo """ for i in range(tries): try: return requests.get(url, timeout=try_timeout, proxies=proxies, verify=verify).content except Exception as e: download_exception = e if i < tries - 1: time.sleep(retry_delay) raise download_exception
[documentos]def download_to_file(url, file_path, **kwargs): """ Descarga un archivo a través del protocolo HTTP, en uno o más intentos, y escribe el contenido descargado el el path especificado. Args: url (str): URL (schema HTTP) del archivo a descargar. file_path (str): Path del archivo a escribir. Si un archivo ya existe en el path especificado, se sobrescribirá con nuevos contenidos. kwargs: Parámetros para download(). """ content = download(url, **kwargs) with open(file_path, "wb") as f: f.write(content)
if __name__ == '__main__': download_to_file(sys.argv[1], sys.argv[2])