diff --git a/requests/utils.py b/requests/utils.py index db67938e67..6703d4e974 100644 --- a/requests/utils.py +++ b/requests/utils.py @@ -256,10 +256,11 @@ def extract_zipped_paths(path): # we have a valid zip archive and a valid member of that archive tmp = tempfile.gettempdir() - extracted_path = os.path.join(tmp, *member.split('/')) + extracted_path = os.path.join(tmp, member.split('/')[-1]) if not os.path.exists(extracted_path): - extracted_path = zip_file.extract(member, path=tmp) - + # use read + write to avoid the creating nested folders, we only want the file, avoids mkdir racing condition + with open(extracted_path, 'wb') as file_handler: + file_handler.write(zip_file.read(member)) return extracted_path