Python Glossary English

Python 3.5+difflibфункция

difflib.diff_bytes()

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

Обёртка, позволяющая unified_diff и context_diff сравнивать строки bytes в неизвестной кодировке.

Синтаксис

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

Сами unified_diff и context_diff на bytes падают с TypeError. diff_bytes декодирует всё через surrogateescape, сравнивает и кодирует обратно, так что битые байты проходят без потерь. Все аргументы — имена файлов, даты и lineterm — тоже должны быть bytes. Появилась в Python 3.5.

Примеры

import difflib
a = [b'caf\xe9\n']
b = [b'cafe\n']
print(list(difflib.diff_bytes(difflib.unified_diff, a, b, b'a', b'b'))[3:])  # → [b'-caf\xe9\n', b'+cafe\n']
import difflib
try:
    list(difflib.unified_diff([b'x'], [b'y']))
except TypeError as e:
    print(e)  # → lines to compare must be str, not bytes (b'x')

См. также

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