Название в значительной степени говорит само за себя: я потратил более дня на то, чтобы выяснить, как извлечь одну строку текста из большого текстового файла, введя номер строки, но безуспешно. До сих пор кажется, что единственные решения, о которых люди говорят в Интернете, загружают весь текстовый файл в список, но он просто слишком велик для этого. Структура файла .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
загружает файл в память, так что да, это тоже нежизнеспособно.
handle.readline
не является хорошим решением? - person Ilija   schedule 13.02.2018