Вопросы

Pythons os.walk () посещает все папки, а не только данную папку

Я хотел использовать простой скрипт, чтобы получить все изображения ниже данной папки и сравнить их / найти дубликаты.

Зачем изобретать колесо, если первый шаг решения уже существует в разделе: Поиск дубликатов файлы и их удаление

Но он терпит неудачу уже на первом этапе в том смысле, что посещает все папки на данном USB-накопителе. Я удалил все хеширование и пытаюсь получить только список файлов, но даже это длится вечно и посещает каждый файл на USB-накопителе.

from __future__ import print_function   # py2 compatibility
from collections import defaultdict
import hashlib
import os
import sys


folder_to_check = "D:\FileCompareTest"

def check_for_duplicates(paths, hash=hashlib.sha1):
    hashes_by_size = defaultdict(list)  # dict of size_in_bytes: [full_path_to_file1, full_path_to_file2, ]
    hashes_on_1k = defaultdict(list)  # dict of (hash1k, size_in_bytes): [full_path_to_file1, full_path_to_file2, ]
    hashes_full = {}   # dict of full_file_hash: full_path_to_file_string

    for path in paths:
        for dirpath, dirnames, filenames in os.walk(path):
            # get all files that have the same size - they are the collision candidates
            for filename in filenames:
                full_path = os.path.join(dirpath, filename)
                try:
                    # if the target is a symlink (soft one), this will 
                    # dereference it - change the value to the actual target file
                    full_path = os.path.realpath(full_path)
                    file_size = os.path.getsize(full_path)
                    hashes_by_size[file_size].append(full_path)
                except (OSError,):
                    # not accessible (permissions, etc) - pass on
                    continue




check_for_duplicates(folder_to_check)

Вместо того, чтобы получить список hashes_by_size за пару миллисекунд, я застреваю либо в вечном цикле, либо программа завершается через несколько часов со всеми файлами на USB.

Читать:
Discord.py Ошибка при попытке редактирования встраивания через X секунд

Что я не понимаю в os.walk ()?

Значит, я не могу ограничить os.walk переходом только под определенную папку? мне трудно в это поверить   —  person rioZg    schedule 03.02.2021

Вы можете найти подробную информацию о том, как os.walk работает на странице документации. https://docs.python.org/3/library/os.html#os.walk.   —  person rioZg    schedule 03.02.2021

Похожие записи

Предоставить Amazon ML разрешение на чтение из Amazon S3 программно

admin

Воздушный поток с использованием Cronitier

admin

Azure DevOps Pipeline изменяет разрешения сертификата для приложения Service Fabric

admin

Всегда ли sizeof (char *) равен sizeof (double *)?

admin

При выборе изменения получить значение параметра

admin

Файл дампа ядра не создается после ошибки сегментации в macOS Big Sur

admin