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.

Что я не понимаю в 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

Источник: ledsshop.ru

Стиль жизни - Здоровье!