diff --git a/core/fs.py b/core/fs.py index 6d37fb83..11a29a20 100644 --- a/core/fs.py +++ b/core/fs.py @@ -315,6 +315,14 @@ class File: """Returns whether this file wrapper class can handle ``path``.""" return not path.is_symlink() and path.is_file() + def exists(self) -> bool: + """Safely check if the underlying file exists, treat error as non-existent""" + try: + return self.path.exists() + except OSError as ex: + logging.warning(f"Checking {self.path} raised: {ex}") + return False + def rename(self, newname): if newname == self.name: return diff --git a/core/scanner.py b/core/scanner.py index 72550497..67124f20 100644 --- a/core/scanner.py +++ b/core/scanner.py @@ -172,7 +172,7 @@ class Scanner: if not self.mix_file_kind: matches = [m for m in matches if get_file_ext(m.first.name) == get_file_ext(m.second.name)] if self.include_exists_check: - matches = [m for m in matches if m.first.path.exists() and m.second.path.exists()] + matches = [m for m in matches if m.first.exists() and m.second.exists()] matches = [m for m in matches if not (m.first.is_ref and m.second.is_ref)] if ignore_list: matches = [m for m in matches if not ignore_list.are_ignored(str(m.first.path), str(m.second.path))]