Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 12, 2013 12:38:34

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Поиск дубликатов файлов под виндой

По именам файлов довольно не глупо сравнивать - допустим есть дубликат песни, только одна в mp3, вторая в wav, ну и так далее. Таких примеров полно, хотелось бы почистить всё как следует



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#2 Ноя. 12, 2013 13:11:08

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

Поиск дубликатов файлов под виндой

Так вот речь о том, что в таком виде сравнение по именам имеет различные случаи, когда такой алгоритм не сработает. Например, в случае серии пронумерованных файлов. В данном случае, одного сравнения с некоторым коэффициентом недостаточно. Нужно четко выделить требования для сравнения имен файлов, в каких случаях мы допускаем, что имена похожи. В каких нет.
И вот в таком виде, этот алгоритм будет давать множество ложных срабатываний, я бы даже предположил гораздо больше чем значимых результатов.



Отредактировано cutwater (Ноя. 12, 2013 13:14:50)

Офлайн

#3 Ноя. 12, 2013 13:30:57

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Поиск дубликатов файлов под виндой

Хорошо. Вы человек, знающий, вот помогите с алгоритмом, как же допилить этот несчастный скрипт, да чтоб навести порядок на компе хоть немного?



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#4 Ноя. 12, 2013 15:42:46

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

Поиск дубликатов файлов под виндой

https://gist.github.com/cutwater/7431005

Как один из вариантов, а с дубликатами по именам разбирайтесь сами.



Отредактировано cutwater (Ноя. 12, 2013 15:47:05)

Офлайн

#5 Ноя. 12, 2013 21:17:29

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2757
Репутация: +  184  -
Профиль   Отправить e-mail  

Поиск дубликатов файлов под виндой

> Самое первое - непонятное поведение os.walk, если указать os.walk('d:') - оно не хочет работать, по крайней мере, если запустить программу вот так - duplicates.py d: - оно ничего не делает, если же запустить duplicates.py d - тогда начинает шуршать

Вот не думал что я буду это виндузятникам объяснять
d: - Это обозначение тома (читай диска) “d”
d - Это корневая файловая файловая система которая находится на томе “d”
Т.е. d: это не путь к каталогу, а обозначение тома. По этому walkу тебя и работает не однозначно.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Ноя. 12, 2013 22:57:13

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Поиск дубликатов файлов под виндой

Master_Sergius
Насчёт неверия - что стоит, взять и проверить?
мне не нужно проверять что я не слон…но судя по топику вам нужно разжевывать, бывает тут сидят люди гораздо опытнее вас, и с первого взгляда видят проблему, и не не нужно ее проверять непосредственно, у них есть опыт и знания что бы об этом судить. Далее, по само собой сложившейся традиции, гораздо эффективнее заставить человека думать, нежели предоставить ему готовое решение.да да , вот такие мы педагоги.
Вам нужно помнить что такое бинарный файл и текстовой.
На счет совпадение по именам. Я дам вам ценный совет о том как надо думать что бы писать правильный код. Возьмите ряд “проблемных” файлов и начните их обрабатывать в ручную, выясните для самого себя критерии по которым вы принимаете решения для каждого конкретного случая. Эти критерии прямо перейдут в ваш код. Вам правильно сказали выше: foto_1.jpg и foto_2.jpg, my_song.mp3 и my_song.flac - это очень разные случаи которые требуют разного подхода, который в свою очередь должны проработать вы сами.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Ноя. 13, 2013 10:33:20

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Поиск дубликатов файлов под виндой

Ок, “педагоги”
Я ж вас и не осуждаю за ваши методы, но да, порой мне надо разжевать, бывает туплю. Просто прошу помочь разобраться самоучке…
Ещё такая вещь - для почистки воспользовался поиском дубликатов в Тотал Коммандере - он это дело по названиям и по размеру делает быстро. Вот, хотелось бы знать, что же там за алгоритм - и бд он явно не юзает, разве что симуляцию какую-то. При этом, в процессе расло количество используемой оперативки тоталом. Под конец было чуть ли не до 100 мб… Неужто он всё держал в оперативе? Потом, со списком он мог даже сортировку проводить, а список был длинный более 100к совпадений. Очень интересно знать алгоритм.

п.с. насчёт виндузятника, мне в последнее время даже линукс стал более понятным, чем винда, но это не суть важно. Ещё многому учиться, учиться и ещё раз учиться.



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#8 Ноя. 13, 2013 20:23:05

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Поиск дубликатов файлов под виндой

Для почистки диска пробовал пользоваться dupkiller, но на самом деле оказалось неэффективно. Если аккуратно работаешь то вообще не возникает нужды чтото чистить.

Но тут возникает интересная задача:

Как представить информацию о найденых дубликатах?

Дело в том, что они часто возникают при копировании папок. В этом случае желательно получить не 300 сообщений (по количествую файлов в папке) о том что файлы находятся в директориях a и b, а получить сообщение что дублируются директории. Директория может иметь поддиректории. При работе может оказаться что они почти совпадают (например добавлена пара файлов) и.т.п.

Другой пример, SConscript, makefile и т.п. маркеры очень часто полностью совпадают, но они необходимы, поскольку просто указывают на поведение утилит в данной директории. Их при поиске дубликатов учитывать не нужно.



Офлайн

#9 Ноя. 13, 2013 22:39:07

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Поиск дубликатов файлов под виндой

Master_Sergius
вы сами и ответили - держит это все в памяти, но я открою вам секрет, та же бд sqlite может работать не в файл, а в память… То что он делает это быстро ничего удивительного, ведь получить имя файла и его размер в N раз проще, чем посчитать хеш-сумму.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Ноя. 14, 2013 06:39:35

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Поиск дубликатов файлов под виндой

doza_and
И всякие файлы типа __init__.py тоже не нужны :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version