From e850296f68dd1ca7122938f42e01b907b241fabd Mon Sep 17 00:00:00 2001 From: j Date: Fri, 22 Mar 2024 08:48:48 +0100 Subject: [PATCH] download to tmp file and rename once download is complete --- ox/net.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ox/net.py b/ox/net.py index 4d58bad..bb8e086 100644 --- a/ox/net.py +++ b/ox/net.py @@ -113,14 +113,15 @@ get_url = read_url def save_url(url, filename, overwrite=False): if not os.path.exists(filename) or overwrite: dirname = os.path.dirname(filename) - if dirname and not os.path.exists(dirname): - os.makedirs(dirname) + os.makedirs(dirname, exist_ok=True) headers = DEFAULT_HEADERS.copy() r = requests.get(url, headers=headers, stream=True) - with open(filename, 'wb') as f: + filename_tmp = filename + '~' + with open(filename_tmp, 'wb') as f: for chunk in r.iter_content(chunk_size=1024): if chunk: # filter out keep-alive new chunks f.write(chunk) + os.rename(filename_tmp, filename) def _get_size(url): req = urllib.request.Request(url, headers=DEFAULT_HEADERS.copy())