Сообщить об ошибке.

Функция unified_diff() модуля difflib в Python

Получить различия двух строк в стиле утилиты 'diff'

Синтаксис:

import difflib

difflib.unified_diff(a, b, fromfile='', \
                     tofile='', fromfiledate='', \
                     tofiledate='', n=3, lineterm='\n')

Параметры:

  • a, b - сравниваемые списки строк.
  • fromfile='' - строка, заголовок для имени файла,
  • tofile='' - строка, заголовок для имени файла,
  • fromfiledate='' - время модификации в формате ISO 8601,
  • tofiledate='' - время модификации в формате ISO 8601,
  • n=3 - число строк контекста,
  • lineterm='\n' - разделитель строк.

Возвращаемое значение:

Описание:

Функция unified_diff() модуля difflib сравнивает a и b - списки строк и возвращает дельту - генератор дельта-строк в унифицированном формате Unix утилиты diff.

Контекстные различия - это компактный способ отображения только тех строк, которые изменились, плюс несколько строк контекста. Изменения отображаются во встроенном стиле, вместо отдельных блоков до/после. Число строк контекста задается числом n, которое по умолчанию равно трем.

По умолчанию строки управления diff (те, что с ---, +++ или @@) создаются с символом новой строки '\n'. Это полезно, так как входы, созданные из результатов работы io.IOBase.readline() приводят к различиям, которые подходят для использования io.IOBase.writelines(), так как и входы, и выходы имеют конечные новые строки.

Для входных данных, которые не имеют завершающих символов новой строки, установите аргумент lineterm='', чтобы выходные данные не имели новых строк.

У формата Unix утилиты diff имеются заголовки для имен файлов и времени изменения. Любой из них или все они могут быть заданы с помощью строк для fromfile, tofile, fromfiledate и tofiledate. Время модификации обычно выражается в формате ISO 8601. Если не указано, строки по умолчанию будут пустыми.

Примеры использования:

>>> import difflib, sys
>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n']
>>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n']
>>> diff = difflib.unified_diff(s1, s2, fromfile='before.py', tofile='after.py')
>>> sys.stdout.writelines(diff)
# --- before.py
# +++ after.py
# @@ -1,4 +1,4 @@
# -bacon
# -eggs
# -ham
# +python
# +eggy
# +hamster
#  guido