From 2435bfe8968cd80f3caa5ba46f4ec0fe3ad0aa2b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 26 May 2021 15:51:49 +0200 Subject: [PATCH] Add URL download to check_file() (#3330) * Add URL file download to check_file() * cleanup * pathlib bug fix --- utils/general.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/utils/general.py b/utils/general.py index 9a882715f0ad..006e64859f32 100755 --- a/utils/general.py +++ b/utils/general.py @@ -173,12 +173,19 @@ def check_imshow(): def check_file(file): - # Search for file if not found - if Path(file).is_file() or file == '': + # Search/download file (if necessary) and return path + file = str(file) # convert to str() + if Path(file).is_file() or file == '': # exists return file - else: + elif file.startswith(('http://', 'https://')): # download + url, file = file, Path(file).name + print(f'Downloading {url} to {file}...') + torch.hub.download_url_to_file(url, file) + assert Path(file).exists() and Path(file).stat().st_size > 0, f'File download failed: {url}' # check + return file + else: # search files = glob.glob('./**/' + file, recursive=True) # find file - assert len(files), f'File Not Found: {file}' # assert file was found + assert len(files), f'File not found: {file}' # assert file was found assert len(files) == 1, f"Multiple files match '{file}', specify exact path: {files}" # assert unique return files[0] # return file