import difflib difflib.diff_bytes(dfunc, a, b, fromfile=b'', \ tofile=b'', fromfiledate=b'', \ tofiledate=b'', n=3, lineterm=b'\n')
dfunc
- вызываемая diff
функция,a
, b
- сравниваемые списки байтовых объектов,fromfile=''
- байтовая строка, заголовок для имени файла,tofile=''
- байтовая строка, заголовок для имени файла,fromfiledate=''
- байтовая строка, время модификации в формате ISO 8601,tofiledate=''
- байтовая строка, время модификации в формате ISO 8601,n=3
- число строк контекста,lineterm='\n'
- байтовая строка, разделитель строк.Функция diff_bytes()
модуля difflib
сравнивает списки байтовых объектов a
и b
, используя dfunc
. Выдает последовательность дельта-строк байтов в формате, возвращаемом dfunc
. Функция dfunc
должна быть вызываемым, это как правило, либо unified_diff()
или context_diff()
.
Позволяет сравнивать данные с неизвестной или несогласованной кодировкой. Все входные данные, кроме n
, должны быть байтовыми объектами, а не строками str
. Работает без потерь, преобразовывая все входные данные (кроме параметра n
) в str
, вызывая dfunc(a, b, fromfile, tofile, fromfiledate, tofiledate, n, lineterm)
. Выходные данные func
затем преобразуются обратно в байты, так что дельта-строки, которые вы получаете, имеют те же неизвестные/несогласованные кодировки, что и a
, b
.
>>> import difflib >>> s1 = [b'bacon', b'eggs', b'ham', b'guido\n'] >>> s2 = [b'python', b'eggy', b'hamster', b'guido'] >>> diff = difflib.diff_bytes(difflib.unified_diff, s1, s2, fromfile=b'before.py', tofile=b'after.py') >>> for line in diff: ... print(line) ... # b'--- before.py\n' # b'+++ after.py\n' # b'@@ -1,4 +1,4 @@\n' # b'-bacon' # b'-eggs' # b'-ham' # b'+python' # b'+eggy' # b'+hamster' # b' guido'