Budulianin
Чем хуже режим ‘rb’ ?
во-первых, в третьем питоне есть разница, что возвращается из файла, строки или байтовые объекты
так как строки - наборы юникодовых точек, то и символы там могут быть любые
следовательно, из файла он может прочитать что угодно, и искать в них можно тоже что угодно
во-вторых, в бинарном режиме рассматриваются лишние символы; например, возврат каретки будет рассматриваться как символ, хотя это не нужно, а иногда даже ошибку может вызвать (если
start задать конкретно с переводом строки
\n, то она не совпадёт из-за возврата каретки, я уж не говорю о том, что строку в байтовом объекте искать нельзя (для удобства допустил, что ты её перевёл в байтовый объект))
в-третьих, текстовый режим даёт кроссплатформенность, то есть это значит, что скрипт, применяемый в разных системах, проводит сравнения одинаково, и не нужно писать n разных кодов, которые учитывают различия
то есть, где-то может быть
\r - ты пишешь код, который её учтёт, а где-то нет
\r - получается, первый код делает лишнюю работу в таком случае, учитывая то, чего нет и не будет на данной системе
и ещё: не делай того, чего никто не делает - не преумножай сущности без необходимости
то есть, если тебе чего-то не надо, то и на всякий случай это делать не надо