diff options
Diffstat (limited to 'methods.py')
-rw-r--r-- | methods.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/methods.py b/methods.py index 1c33b00051..da6b3419cd 100644 --- a/methods.py +++ b/methods.py @@ -863,16 +863,21 @@ def clean_cache(cache_path: str, cache_limit: int, verbose: bool): texts = [] stats = [] for file in files: - # Failing a utf-8 decode is the easiest way to determine if a file is binary. try: - with open(file, encoding="utf-8") as out: - out.read(1024) - except UnicodeDecodeError: - stats.append((file, *os.stat(file)[6:8])) + # Save file stats to rewrite after modifying. + tmp_stat = os.stat(file) + # Failing a utf-8 decode is the easiest way to determine if a file is binary. + try: + with open(file, encoding="utf-8") as out: + out.read(1024) + except UnicodeDecodeError: + stats.append((file, *tmp_stat[6:8])) + # Restore file stats after reading. + os.utime(file, (tmp_stat[7], tmp_stat[8])) + else: + texts.append(file) except OSError: print_error(f'Failed to access cache file "{file}"; skipping.') - else: - texts.append(file) if texts: count = len(texts) |