Не пытайтесь интерпретировать значение file.tell()
for a text file - это просто некоторое непрозрачное число, представляющее позицию в потоке (вы можете передать его file.seek()
).
В текстовом файле file.read(1)
читает один символ Юникода (код), а не байт. В зависимости от кодировки символов, используемой для чтения текстового файла, один код Unicode может быть от одного до четырех байтов (обычно).
По умолчанию действует универсальный новый режим: '\r\n'
, '\r'
, '\n'
все переведены на '\n'
.
Чтобы просмотреть содержимое файла в виде байтов, откройте в двоичном режиме: 'rb'
. file.tell()
в этом случае возвращает позицию в байтах.
b'\0'
(null байт) указывает кодировку utf-16, которая является общей для Windows.
Вы помещаете курсор во вторую позицию, читаете символ на третьем, и он продвигается вперед, и теперь он находится на четвертой позиции. Нет? – alfasin
НЕТ! для любого другого персонажа он перемещает одну позицию вперед! – Amen
Пожалуйста, размещайте содержимое файла. – alfasin