SOS !! Пожалуйста,помогите с методом заполнения данных
Вопрос в следующем,что делать если файл условно "бесконечен" то бишь значения в него добавляются на ходу,как переделать код ? Безусловно я примерно понимаю ,как это реализовать,но очень поможет " рука мастера " дабы потом разобрался с участком кода и в целом получил опыт.
код выполняет следующую задачу : Написать программу, которая читая последовательность чисел из файла, выводит на экран самую длинную возрастающую последовательность, ее длину и позицию (в числах и символах) с которой она началась.
import time,os,string,psutil,re
start_time = time.time()
symbol_len = 1 # Размер буфера чтения
with open('111.txt','r+') as file:
a = str(file.read())
s = re.sub('[^\d]', '', a)
if os.stat("111.txt").st_size == 0 :
print("Файл пуст !!!")
else:
print("Введена последовоательность :",s)
res = ''
res_list = []
i = 0
while i < len(s):
if res == '' or (int(res[-1]) < int(s[i])):
res += s[i]
else:
res_list.append(res)
res = s[i]
i += 1
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())
print("Программа занимает ", process.memory_info().rss /1048576,"мбайт") # in bytes
print("--- %s Секунд выполнялась программа ---" % (time.time() - start_time))
```
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
а не подойдет такой алгоритм:
позиция в файле = 0
в цикле если размер файла изменился
- открыть файл
- перейти с помощью seek на старую позицию
- считать данные с позиции до конца файла
- обработать данные
- закрыть файл
- запомнить новую позицию в файле