Почему программа не видит первый символ из файла?
код выполняет следующую задачу : Написать программу, которая читая последовательность чисел из файла, выводит на экран самую длинную возрастающую последовательность, ее длину и позицию (в числах и символах) с которой она началась. Обязательное условие ( Данные должны считываться построчно)
Пока что пишу только построчное чтение и возникли 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 шт):
s = file.read(symbol_len)
Вот же вы сами прочитали один символ из файла и сдвинули позицию чтения. После этого файл читается уже со 2-й позиции. Хотите читать опять с нулевой позиции - делайте опять file.seek(0,0).
Кроме того, разберитесь, как вы работаете со списком res_list. Инициализировать список нужно до цикла, а пополнять - внутри цикла. А вы делаете всё не так - инициализируете внутри цикла, а добавляете в список всего один элемент после цикла. Да и в переменной res, которую вы добавляете в список, у вас только пустая строка.
Ну и в целом одновременно и читать из файла и писать в него - плохая практика, лучше делайте это отдельными операциями, каждый раз заново открывая и закрывая файл, иначе там может непонятно что твориться с указателем, буфером и т.д.