Различение двух папок (как инструмент сравнения в Linux) с Python
Я пытаюсь написать проект, который будет иметь несколько автономных компонентов. Одним из них является необходимость разграничить две папки и разбить разные файлы в массив строк. Dircmp делает часть этого - он выплевывает разные файлы. Но может показаться, что он фактически не входит в остальные файлы, чтобы увидеть, какие они отличаются по сравнению с тем же файлом в другой папке.
В настоящее время я играл с difflib и filecmp, и если я не делаю что-то совершенно не то, я не могу найти способ достичь того, что я ищу, не написав все это с нуля. Причина, по которой мне это нужно, заключается в том, что этот скрипт на python будет развернут в Windows Boxen, где стандартные инструменты Linux linux не будут доступны.
Единственной моей мыслью было бы просто вызвать diff и тому подобное из командной строки, но это не решило ни одну из моих проблем (получение файлов в массиве и не требует инструментов GNU).
Может кто-нибудь мне помочь? Я до сих пор нахожусь на питоне и буду очень признателен советам экспертов. Спасибо!
1 ответ
Кажется, что filecmp.dircmp
делает то, что ты уже хочешь. Если вы сравните две директории, diff_files
будет список файлов, которые находятся в обоих каталогах, но содержимое которых отличается:
>>> dc = filecmp.dircmp('dir1', 'dir2')
>>> dc.diff_files
<<< ['foo']
Как отметил Jonathanb, если вам нужны реальные различия, их легко использовать difflib
на данный момент, чтобы сделать это.