From 99cb28724f7576aa49a3e8313bf12c8ae19c16ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Tue, 3 May 2022 23:50:12 +0200 Subject: [PATCH] delay directory creation (#2461, #2474) Only call os.makedirs() when an open() call fails with a FileNotFoundError Might cause errors with some post processors etc, but for now I was unable to find any. --- gallery_dl/path.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gallery_dl/path.py b/gallery_dl/path.py index c85bb889..4d76863d 100644 --- a/gallery_dl/path.py +++ b/gallery_dl/path.py @@ -74,7 +74,7 @@ class PathFormat(): self.directory = self.realdirectory = \ self.filename = self.extension = self.prefix = \ self.path = self.realpath = self.temppath = "" - self.delete = self._create_directory = False + self.delete = False extension_map = config("extension-map") if extension_map is None: @@ -138,7 +138,11 @@ class PathFormat(): def open(self, mode="wb"): """Open file and return a corresponding file object""" - return open(self.temppath, mode) + try: + return open(self.temppath, mode) + except FileNotFoundError: + os.makedirs(self.realdirectory, exist_ok=True) + return open(self.temppath, mode) def exists(self): """Return True if the file exists on disk""" @@ -187,7 +191,6 @@ class PathFormat(): directory += sep self.realdirectory = directory - self._create_directory = True def set_filename(self, kwdict): """Set general filename data""" @@ -279,9 +282,6 @@ class PathFormat(): def build_path(self): """Combine directory and filename to full paths""" - if self._create_directory: - os.makedirs(self.realdirectory, exist_ok=True) - self._create_directory = False self.filename = filename = self.build_filename(self.kwdict) self.path = self.directory + filename self.realpath = self.realdirectory + filename