Source code for limix.sh._url

from .._display import session_line


[docs]def download(url, dest=None, verbose=True): """ Download file. Parameters ---------- url : str Url to the file. dest : str, optional File destination. The current working directory is used if ``None`` is passed. Defaults to ``None``. verbose : bool, optional ``True`` for displaying progress. Defaults to ``True``. Returns ------- filepath : str File path to the downloaded file. """ import os from urllib.request import urlretrieve from urllib.error import HTTPError if dest is None: dest = os.getcwd() filepath = os.path.join(dest, _filename(url)) with session_line(f"Downloading {url}... ", disable=not verbose): tries = 3 while tries > 0: try: urlretrieve(url, filepath) tries = 0 except HTTPError as e: if e.code == 504 and tries > 0: tries -= 1 else: raise return filepath
def _filename(url): import os from urllib.parse import urlparse a = urlparse(url) return os.path.basename(a.path)