Почему программа не видит первый символ из файла?

код выполняет следующую задачу : Написать программу, которая читая последовательность чисел из файла, выводит на экран самую длинную возрастающую последовательность, ее длину и позицию (в числах и символах) с которой она началась. Обязательное условие ( Данные должны считываться построчно)

Пока что пишу только построчное чтение и возникли 2 проблемы

  1. Файл не видит первый символ
  2. Я не совсем понимаю как перемещаться по строчкам

import time,os,string,psutil,re
symbol_len = 1  # Размер буфера чтения
with open('111.txt','r+') as file:
    file.seek(0,0)
    file.write('12345')  # собственно, запись
    s = file.read(symbol_len)  # Читаем первый символ
    if not s:  # Обработка исключения пустого файла
        print("\nФайл text.txt пустой.")

    while s:
        res = ''
        res_list = [ ]
        i = 0
        s = str(file.readline())
        s = re.sub('[^\d]', '', s)
        print(s)
    res_list.append(res)
    _max = max(res_list, key=len)
    print(f'Самая длинная восх. посл. - {_max}\nсимволов - {len(_max)}\nначальный индекс - {s.find(_max)}')
    process = psutil.Process(os.getpid())

P.S Данные файла

1234еееи

fdsifsjfqaiodfhqudqwjnd8wq7ey32432i4h732er12uewqufhdyu8fuidsaCApOS 1OWE90  JEJASDMASDIoas*(dasifjnuwhr71123456765fdsfdsifsjfqaiodfhqudqwjnd8wq7ey32432i4h732er12uewqufhdyu8fuidsaCApOS 1OWE90  JEJASDMASDIoas*(dasifjnuwhr77ey32432i4h732er12uewqufhdyu8fuidsaCApOS 1OWE90  JEJASDMASDIoas*(dasifjnuwhr7

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

Автор решения: CrazyElf
s = file.read(symbol_len)

Вот же вы сами прочитали один символ из файла и сдвинули позицию чтения. После этого файл читается уже со 2-й позиции. Хотите читать опять с нулевой позиции - делайте опять file.seek(0,0).

Кроме того, разберитесь, как вы работаете со списком res_list. Инициализировать список нужно до цикла, а пополнять - внутри цикла. А вы делаете всё не так - инициализируете внутри цикла, а добавляете в список всего один элемент после цикла. Да и в переменной res, которую вы добавляете в список, у вас только пустая строка.

Ну и в целом одновременно и читать из файла и писать в него - плохая практика, лучше делайте это отдельными операциями, каждый раз заново открывая и закрывая файл, иначе там может непонятно что твориться с указателем, буфером и т.д.

→ Ссылка