Python 3 - Поиск строки в большом текстовом файле по номеру строки
Название в значительной степени говорит само за себя: я потратил целый день на то, чтобы выяснить, как извлечь одну строку текста из большого текстового файла путем ввода номера строки без успеха. Пока что кажется, что единственные решения, о которых говорят пользователи, - загрузить весь текстовый файл в список, но он слишком велик для этого. Структура файла.txt, с которым я работаю, буквально представляет собой большой список URL-адресов, по одному на строку.
Я пытался использовать handle.readline()
, но это не помогло точно определить конкретную строку. Поскольку файл очень большой, я не могу оправдать загрузку всех его строк в память, используя handle.readlines()
метод, так что это также перебор Я пытался написать функцию, используя for index,line in enumerate(handle)
как найти в Интернете, но это странно возвращается None
, Любая помощь приветствуется.
РЕДАКТИРОВАТЬ: Некоторый код ниже, который не работает:
fh = open("file.txt","a+")
def offsetfunc(handle,lineNum):
line_offset = []
offset = 0
for line in handle:
line_offset.append(offset)
offset += len(line)
handle.seek(line_offset[lineNum-1],0)
offsetfunc(fh,1) #Returns IndexError
print(fh.readline()) #Presumably would be viable, if the previous statement worked?
Кроме того, используя linecache
Техника загружает файл в память, так что да, это тоже нежизнеспособно.
1 ответ
Эта программа может делать то, что вы хотите:
def fetch_one_line(filename, linenumber):
with open(filename) as handle:
for n, line in enumerate(handle, 1):
if n == linenumber:
return line
print("OOPS! There aren't enough lines in the file")
return None
my_line = fetch_one_line('input.txt', 5)
print(repr(my_line))