Python Glossary English

все Python 3difflibфункция

difflib.unified_diff()

форматы различий

Строит различия двух списков строк в формате unified diff, как git diff: строки -, + и заголовки @@.

Синтаксис

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

Принимает списки строк, а не текст: строку целиком он сравнит посимвольно. Ловушка с концами строк: для списка из splitlines() заголовки получат лишний '\n' и вывод «поедет» — передайте lineterm=''. Функция возвращает генератор, и для одинаковых входов он пуст. Показывает только 3 строки контекста (n=3).

Примеры

import difflib
a = ['one\n', 'two\n', 'three\n']
b = ['one\n', 'too\n', 'three\n']
print(''.join(difflib.unified_diff(a, b, 'old.txt', 'new.txt')))
# → --- old.txt / +++ new.txt / @@ -1,3 +1,3 @@ / -two / +too
import difflib
old = 'x = 1\ny = 2'.splitlines()
new = 'x = 1\ny = 3'.splitlines()
for line in difflib.unified_diff(old, new, 'v1', 'v2', lineterm=''):
    print(line)  # → --- v1 / +++ v2 / @@ -1,2 +1,2 @@ / -y = 2 / +y = 3

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности