From ecefee584ba323280e2db786c6325aa13a4d6aa8 Mon Sep 17 00:00:00 2001 From: sashacmc Date: Wed, 3 Jun 2026 19:05:15 +0200 Subject: [PATCH] Fix dryrun --- photo_importer/fileprop.py | 13 ++++++++++++- photo_importer/mover.py | 30 +++++++++++++++++------------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/photo_importer/fileprop.py b/photo_importer/fileprop.py index 738b1f0..c90215c 100755 --- a/photo_importer/fileprop.py +++ b/photo_importer/fileprop.py @@ -75,8 +75,19 @@ class FileProp: self.__out_list = set() self.__exiftool = exiftool.ExifToolHelper() + def close(self): + if self.__exiftool is not None: + self.__exiftool.terminate() + self.__exiftool = None + def __del__(self): - self.__exiftool.terminate() + self.close() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.close() def __prepare_ext_to_type(self): self.ext_to_type = {} diff --git a/photo_importer/mover.py b/photo_importer/mover.py index 062977f..f2f3566 100755 --- a/photo_importer/mover.py +++ b/photo_importer/mover.py @@ -37,17 +37,20 @@ class Mover: self.__stat['processed'] = 0 self.__stat['errors'] = 0 res = [] - for fname in self.__filenames: - try: - prop = self.__file_prop.get(fname) - new_fname = self.__move_file(fname, prop) - if new_fname: - res.append((fname, new_fname, prop)) - except Exception as ex: - logging.error('Move files exception: %s', ex) - self.__stat['errors'] += 1 + try: + for fname in self.__filenames: + try: + prop = self.__file_prop.get(fname) + new_fname = self.__move_file(fname, prop) + if new_fname: + res.append((fname, new_fname, prop)) + except Exception as ex: + logging.error('Move files exception: %s', ex) + self.__stat['errors'] += 1 - self.__stat['processed'] += 1 + self.__stat['processed'] += 1 + finally: + self.__file_prop.close() return res @@ -104,6 +107,8 @@ class Mover: return new_fname def __move(self, src, dst): + if self.__dryrun: + return if self.__use_shutil: shutil.move(src, dst) else: @@ -111,6 +116,8 @@ class Mover: raise SystemError(f'mv "{src}" "{dst}" failed') def __copy(self, src, dst): + if self.__dryrun: + return if self.__use_shutil: shutil.copy2(src, dst) else: @@ -118,9 +125,6 @@ class Mover: raise SystemError(f'cp "{src}" "{dst}" failed') def __run(self, args): - if self.__dryrun: - return True - with subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as proc: proc.wait() info = proc.stdout.read().strip()