diff --git a/Tools/scripts/README b/Tools/scripts/README
index ca2ef93..5281804 100644
--- a/Tools/scripts/README
+++ b/Tools/scripts/README
@@ -15,6 +15,7 @@
 crlf.py			Change CRLF line endings to LF (Windows to Unix)
 cvsfiles.py		Print a list of files that are under CVS
 db2pickle.py		Dump a database file to a pickle
+diff.py			Print file diffs in context, unified, or ndiff formats
 dutree.py		Format du(1) output as a tree sorted by size
 eptags.py		Create Emacs TAGS file for Python modules
 finddiv.py		A grep-like tool that looks for division operators.
diff --git a/Tools/scripts/diff.py b/Tools/scripts/diff.py
new file mode 100644
index 0000000..c943699
--- /dev/null
+++ b/Tools/scripts/diff.py
@@ -0,0 +1,41 @@
+""" Command line interface to difflib.py providing diffs in three formats:
+
+* ndiff:    lists every line and highlights interline changes.
+* context:  highlights clusters of changes in a before/after format
+* unified:  highlights clusters of changes in an inline format.
+
+"""
+
+import sys, os, time, difflib, optparse
+
+usage = "usage: %prog [options] fromfile tofile"
+parser = optparse.OptionParser(usage)
+parser.add_option("-c", action="store_true", default=False, help='Produce a context format diff (default)')
+parser.add_option("-u", action="store_true", default=False, help='Produce a unified format diff')
+parser.add_option("-n", action="store_true", default=False, help='Produce a ndiff format diff')
+parser.add_option("-l", "--lines", type="int", default=3, help='Set number of context lines (default 3)')
+(options, args) = parser.parse_args()
+
+if len(args) == 0:
+    parser.print_help()
+    sys.exit(1)
+if len(args) != 2:
+    parser.error("need to specify both a fromfile and tofile")
+
+n = options.lines
+fromfile, tofile = args
+
+fromdate = time.ctime(os.stat(fromfile).st_mtime)
+todate = time.ctime(os.stat(tofile).st_mtime)
+fromlines = open(fromfile).readlines()
+tolines = open(tofile).readlines()
+
+if options.u:
+    diff = difflib.unified_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n)
+elif options.n:
+    diff = difflib.ndiff(fromlines, tolines)
+else:
+    diff = difflib.context_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n)
+
+sys.stdout.writelines(diff)
+
