Прочитайте некоторые конкретные строки из большого файла в Python - PullRequest
0 голосов
/ 20 октября 2019

Я хочу прочитать некоторые конкретные строки из большого текстового файла, где номера строк находятся в списке, например: list_Of_line = [3991, 3992, ...]. Я хочу проверить, есть ли строка «этот город» в строке 3991, 3992, ... или нет. Я хочу получить прямой доступ к этим линиям. Как я могу сделать это в Python? Text_File похож на

Line_No
......................
3990   It is a big city.
3991   I live in this city.
3992   I love this city.
.......................

1 Ответ

0 голосов
/ 20 октября 2019

Невозможно напрямую получить прямой доступ к определенному количеству строк файла, поскольку строки могут начинаться в любой позиции и иметь любую длину. Таким образом, единственный способ узнать, где находится каждая строка в файле, - это прочитать каждый символ файла, чтобы найти каждый символ новой строки.

Понимая, что вы можете перебирать заданный объект файла для создания списка файлов. позиции конца каждой строки, вызывая метод tell объекта файла, чтобы затем вы могли "напрямую получить доступ" к любому номеру строки, который вы хотите, с помощью метода seek объекта файла, чтобы прочитать определенную строку:

list_of_lines = [3991, 3992]
with open('file.txt') as file:
    positions = [0, *(file.tell() for line in file)]
    for line_number in list_of_lines:
        file.seek(positions[line_number - 1])
        if 'this city' in next(file):
            print(f"'this city' found in line #{line_number}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...