Python DiffLib
difflib is a module for producing file deltas.
Contents
Usage
Consider an 'old' file like:
foo bar baz 1 2 3
And a 'new' file like:
foo bar baz 1 5 3
Context Diff
Use context_diff to create a delta in context diff format.
To create a file like:
*** a.txt --- b.txt *************** *** 1,9 **** foo bar - - baz 1 ! 2 3 --- 1,7 ---- foo bar baz 1 ! 5 3
Try:
import difflib with open('a.txt', 'r') as f: old = f.readlines() with open('b.txt', 'r') as f: new = f.readlines() d = difflib.context_diff(old, new, fromdesc='a.txt', todesc='b.txt') with open('diff.txt', "w") as f: f.writelines(d)
Differ
Use ndiff to create a delta in differ style.
Try create a file like:
foo bar - - baz 1 - 2 + 5 3
Try:
import difflib with open('a.txt', 'r') as f: old = f.readlines() with open('b.txt', 'r') as f: new = f.readlines() d = difflib.ndiff(old, new) with open('diff.txt', "w") as f: f.writelines(d)
Unified Diff
Use unified_diff to create a delta in unified diff format.
To create a file like:
--- a.txt +++ b.txt @@ -1,9 +1,7 @@ foo bar - - baz 1 -2 +5 3
Try:
import difflib with open('a.txt', 'r') as f: old = f.readlines() with open('b.txt', 'r') as f: new = f.readlines() d = difflib.unified_diff(old, new, fromdesc='a.txt', todesc='b.txt') with open('diff.txt', "w") as f: f.writelines(d)
HTML Table
To create a stylized HTML table with line-by-line comparisons, use the HtmlDiff class.
import difflib with open('a.txt', 'r') as f: old = f.readlines() with open('b.txt', 'r') as f: new = f.readlines() d = difflib.HtmlDiff(wrapcolumn=80).make_file(old, new, fromdesc='a.txt', todesc='b.txt') with open('diff.html', "w") as f: f.write(d)
Functions
Diff_Bytes
Get_Close_Matches
Is_Character_Junk
Is_Line_Junk
Restore
Classes
Differ
SequenceMatcher
See also
Python difflib module documentation
Python Module of the Day article for difflib