summaryrefslogtreecommitdiff
path: root/django/utils/archive.py
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2019-01-31 07:12:55 -0800
committerTim Graham <timograham@gmail.com>2019-01-31 12:53:36 -0500
commit290d8471bba35980f3e228f9c171afc40f2550fa (patch)
treea05caec39f83a6d83594d5240fe39c3587316e35 /django/utils/archive.py
parentba7a420012799b26ec9e969d0276d2ccee93c1f5 (diff)
Fixed #30147 -- Simplified directory creation with os.makedirs(..., exist_ok=True).
Diffstat (limited to 'django/utils/archive.py')
-rw-r--r--django/utils/archive.py17
1 files changed, 8 insertions, 9 deletions
diff --git a/django/utils/archive.py b/django/utils/archive.py
index 5b9998f89c..b26924cc2a 100644
--- a/django/utils/archive.py
+++ b/django/utils/archive.py
@@ -157,8 +157,8 @@ class TarArchive(BaseArchive):
name = self.split_leading_dir(name)[1]
filename = os.path.join(to_path, name)
if member.isdir():
- if filename and not os.path.exists(filename):
- os.makedirs(filename)
+ if filename:
+ os.makedirs(filename, exist_ok=True)
else:
try:
extracted = self._archive.extractfile(member)
@@ -169,8 +169,8 @@ class TarArchive(BaseArchive):
(name, member.name, exc))
else:
dirname = os.path.dirname(filename)
- if dirname and not os.path.exists(dirname):
- os.makedirs(dirname)
+ if dirname:
+ os.makedirs(dirname, exist_ok=True)
with open(filename, 'wb') as outfile:
shutil.copyfileobj(extracted, outfile)
self._copy_permissions(member.mode, filename)
@@ -199,14 +199,13 @@ class ZipArchive(BaseArchive):
if leading:
name = self.split_leading_dir(name)[1]
filename = os.path.join(to_path, name)
- dirname = os.path.dirname(filename)
- if dirname and not os.path.exists(dirname):
- os.makedirs(dirname)
if filename.endswith(('/', '\\')):
# A directory
- if not os.path.exists(filename):
- os.makedirs(filename)
+ os.makedirs(filename, exist_ok=True)
else:
+ dirname = os.path.dirname(filename)
+ if dirname:
+ os.makedirs(dirname, exist_ok=True)
with open(filename, 'wb') as outfile:
outfile.write(data)
# Convert ZipInfo.external_attr to mode