diff options
| author | Jon Dufresne <jon.dufresne@gmail.com> | 2019-01-31 07:12:55 -0800 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2019-01-31 12:53:36 -0500 |
| commit | 290d8471bba35980f3e228f9c171afc40f2550fa (patch) | |
| tree | a05caec39f83a6d83594d5240fe39c3587316e35 /django/utils/archive.py | |
| parent | ba7a420012799b26ec9e969d0276d2ccee93c1f5 (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.py | 17 |
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 |
