I'm trying to write a project that will have some autonomous components. One of these is the need to diff two folders and spit out the different files into an array of strings. Dircmp does part of this - it spits out the different files. But it would appear it doesn't actually go into the remaining files to see which are different when compared against the same file in a different folder.
Currently I've played with difflib and filecmp, and unless I'm doing something entirely wrong I can't find a way to achieve what I'm looking for without writing it all from scratch. The reason I need开发者_StackOverflow this is because this python script will be deployed on windows boxen where the standard linux diff tools will not be available.
My only other thought would be to just call diff and such from the command line, but that doesn't solve either of my problems (getting the files in an array AND not requiring GNU tools).
Can anyone help me? I'm still a total scrub at python and would really appreciate the expert advice. Thank you!
It seems that filecmp.dircmp
does what you want already. If you compare two directories, diff_files
will be a list of files which are in both directories, but whose contents differ:
>>> dc = filecmp.dircmp('dir1', 'dir2')
>>> dc.diff_files
<<< ['foo']
As pointed out by Jonathanb, if you want actual diffs, it's easy to use difflib
at this point to do so.
精彩评论