Как в python прочитать определенную строку в файле?

Допустим у меня есть файл "context.txt" С содержимым:

asasasasasASasASasASsaASDASDGfgfgfDGFgfdgfdGFD  
HGJHGJHjhgjhgHGFfhgfJHGgffDGFDgfdhGFJHgjhJHGJH   
gjhgJHGJHGgdfdhgfJHGHGjhhdGRSGdgJLkjlHKUhjhJGh  
KJHKjghgfFCHGFJHgjkhlkjl;KJLKKJHjhghtfhHGFHJBK 
JHKJHKhkjhkjhkjhkJHKJHkjhkjGGhbmbhJHBJHBJHbjhb

И мне необходимо прочитать сначала 4ю строку, потом 2ю, потом 5ю, потом 1ю потом 3ю, как сделать это оптимально? Поможет ли тут seek() если знать сколько символов в строке?

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


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

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

Вы можете прочитать файл и записать строки в список либо при помощи readlines(), или же просто:

with open('context.txt') as f: ## Открываем файл
    my_lines = list(f) ## Помещаем в список.
## Выводим нужные строки (Помним, что массив начинается с 0, так что все указатели на 1 меньше)
print(my_lines[3]) 
print(my_lines[1])
print(my_lines[4])
print(my_lines[0])
print(my_lines[2])

А чтобы узнать количество символов, можно использовать просто len(my_lines[3]) к примеру. Правда не понимаю зачем это необходимо делать в Вашем случае.

→ Ссылка
Автор решения: Peter Lavreniuk

Странная задача. Можно сделать так - читать файл построчно и по индексу заполнять dictionary. А потом работать с этим самым dictionary по ключу.

import collections


if __name__ == '__main__':
    dictionary = collections.defaultdict()
    file = open("test.txt")

    for index, line in enumerate(file):
        if index == 3:
            dictionary[1] = line
        if index == 1:
            dictionary[2] = line
        if index == 4:
            dictionary[3] = line
        if index == 0:
            dictionary[4] = line
        if index == 2:
            dictionary[5] = line

    print(dictionary)
→ Ссылка