Будет ли размещаться весь файл в оперативной память при использовании следующей конструкции

Меня интересует будет ли файл загружаться полностью в оперативную память при использовании моей конструкции, которая должна выводить случайную строку из файла. Может есть способ лучше реализовать это? И как можно выгружать этот файл из оперативной памяти (в этом же коде) после вывода строки?

from random import randint
n1 = randint(0,9)
with open('lines.txt', 'r') as file:
    lines = file.readlines()[n1]
    print(lines)

Ответы (1 шт):

Автор решения: MaxU

Вызов file.readlines() - прочитает в память все строки файла. После этого вызова эти данные не используются и поэтому при следующем вызове сборщик мусора освободит эту область памяти.

В данном случае можно воспользоваться itertools.islice:

from itertools import islice

with open('lines.txt', 'r') as file:
    line = list(islice(file, n1, n1+1))[0]        
→ Ссылка