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Сообщить о неточности