Как в python прочитать определенную строку в файле?
Допустим у меня есть файл "context.txt" С содержимым:
asasasasasASasASasASsaASDASDGfgfgfDGFgfdgfdGFD
HGJHGJHjhgjhgHGFfhgfJHGgffDGFDgfdhGFJHgjhJHGJH
gjhgJHGJHGgdfdhgfJHGHGjhhdGRSGdgJLkjlHKUhjhJGh
KJHKjghgfFCHGFJHgjkhlkjl;KJLKKJHjhghtfhHGFHJBK
JHKJHKhkjhkjhkjhkJHKJHkjhkjGGhbmbhJHBJHBJHbjhb
И мне необходимо прочитать сначала 4ю строку, потом 2ю, потом 5ю, потом 1ю потом 3ю, как сделать это оптимально? Поможет ли тут seek() если знать сколько символов в строке?
Прочитал недавно что можно возвращать каретку в самое начало и с помощью readline пролистывать до необходимой строки в цикле и нужную выводить. Мне этот вариант понятен, но он какой-то деревянный (прямо как мои знания), есть ли другие методы?
Ответы (2 шт):
Вы можете прочитать файл и записать строки в список либо при помощи 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]) к примеру. Правда не понимаю зачем это необходимо делать в Вашем случае.
Странная задача. Можно сделать так - читать файл построчно и по индексу заполнять 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)