Как получить n-й символ в чрезвычайно большом текстовом файле? - PullRequest
0 голосов
/ 24 февраля 2020

У меня очень большой текстовый файл (~ 40 ГБ), содержащий неразделенные цифры. Прошло много времени с тех пор, как я работал с файловым вводом / выводом в python (или python в более общем смысле), и я помню некоторый мастер dry с генераторами, используемыми для доступа к таким файлам. Google дал небольшую конкретную справку c; кажется, что все имеют дело с разумно отформатированными данными, к которым они могут обращаться построчно. Все, что мне нужно сделать, это прочитать n-й символ без разрушения ядра, слишком много читая в ОЗУ. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2020

Вы можете использовать f.seek для получения n-го байта в файле. В большинстве распространенных кодировок это также n-й символ:

with open("file.txt") as f:
    char = f.seek(N - 1)
0 голосов
/ 24 февраля 2020

Используйте seek , который переместит файл чтения в заданную позицию. Затем позвоните и прочитайте .

Кроме того, если вы не хотите, чтобы какие-либо дополнительные данные загружались в память во время чтения (только один байт / символ), используйте также buffering=0 при открытии файла.

with open("largeFile", buffering=0) as f:
    f.seek(10000)
    char = f.read(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...