Python 3, проблема с отрицательным поиском () с текстовым файлом Terrabyte,

Я в середине очень большого текстового файла (нигде не EOF), открытого вот так:

    iFile = open('big.csv', 'rb')

Хорошо, что каждая строка данных имеет одинаковую длину. Таким образом, перемещение ВПЕРЕД по файлу просто кратно длине этой строки в байтах.

Мне не нужно переходить к началу файла, а затем перемещаться по данным туда, где я был, всего на несколько строк выше предыдущей точки обработки.

Я вижу только два варианта:

  1. используйте вызов iFile.seek(-425 * 8, 1), который, по-видимому, НЕ будет работать в Python 3... (он выдает ошибку io.UnsupportedOperation: can't do nonzero cur-relative seeks error)

OR

  1. выполнить поиск (0), затем выполнить поиск () в том месте, где я хочу быть.

Есть ли третья альтернатива, которую я не рассматриваю?

Заранее спасибо за любое понимание ... Я в тупике.


person Phil Sauer    schedule 26.04.2021    source источник
comment
Почему бы просто не перейти непосредственно к нужному местоположению, не ища сначала 0?   -  person Barmar    schedule 26.04.2021
comment
Вам нужно открыть файл в бинарном режиме, тогда все ваши поиски будут работать эффективно.   -  person Barmar    schedule 26.04.2021
comment
Вы АБСОЛЮТНО уверены, что использовали 'rb' в вызове open? Потому что эта ошибка должна выдаваться только для файлов, открытых без флага b.   -  person Tim Roberts    schedule 26.04.2021
comment
Да. Абсолютно уверен, что для открытия этого файла использовался «rb». Используя Python 3.9... Я сделал прямой поиск(), и это, кажется, работает... но мне было интересно, почему перемещение назад на заданное количество байтов сейчас не разрешено (было в 2.7, но не использовал это в годы).   -  person Phil Sauer    schedule 28.04.2021
comment
Также: Бармар... спасибо за ваш вклад, это было ценно. Я никогда не думал об этом, вымотавшись в последнее время.   -  person Phil Sauer    schedule 28.04.2021