= Python DiffLib = '''`difflib`''' is a module for producing file deltas. <> ---- == 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 == [[https://docs.python.org/3/library/difflib.html|Python difflib module documentation]] [[https://pymotw.com/3/difflib/|Python Module of the Day article for difflib]] ---- CategoryRicottone