Различение двух папок (как инструмент сравнения в Linux) с Python - PullRequest
2 голосов
/ 18 августа 2011

Я пытаюсь написать проект, который будет иметь несколько автономных компонентов. Одним из них является необходимость разграничить две папки и разбить разные файлы в массив строк. Dircmp делает часть этого - он выплевывает разные файлы. Но может показаться, что он фактически не входит в остальные файлы, чтобы увидеть, какие они отличаются по сравнению с тем же файлом в другой папке.

В настоящее время я играл с difflib и filecmp, и если я не делаю что-то не так, я не могу найти способ добиться того, что я ищу, не написав все это с нуля. Причина, по которой мне это нужно, заключается в том, что этот скрипт на python будет развернут в windows boxen, где стандартные инструменты linux diff не будут доступны.

Моя единственная другая мысль состояла бы в том, чтобы просто вызывать diff и тому подобное из командной строки, но это не решило ни одну из моих проблем (получение файлов в массив И не требующих инструментов GNU).

Кто-нибудь может мне помочь? Я до сих пор нахожусь на питоне и буду очень признателен советам экспертов. Спасибо!

1 Ответ

7 голосов
/ 18 августа 2011

Кажется, что filecmp.dircmp делает то, что вы уже хотите.Если вы сравните два каталога, diff_files будет списком файлов, которые находятся в обоих каталогах, но содержимое которых отличается:

>>> dc = filecmp.dircmp('dir1', 'dir2')
>>> dc.diff_files
<<< ['foo']

Как указано Джонатанб , если вам нужны реальные различия, на этом этапе просто использовать difflib.

...