Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 22, 2011 08:35:13

avdoshkin
От:
Зарегистрирован: 2009-08-08
Сообщения: 93
Репутация: +  -1  -
Профиль   Отправить e-mail  

glob_fileinput(чтение один раз)

Пример:

def One():
duble = []
for l in open("log.log"):
duble.append(l)

for i in set(duble):
f = Two(i.rstrip())

def Two(*args):
for fname in glob.glob('test*.txt'):
for line in open(fname):
if args[0]==line:
retrun line
Вопрос как в функции Two() прочитать все файлы один раз и в прочитанном найти нужное, а такой алгоритм работы, для каждой строки читает все файлы каждый раз.



Офлайн

#2 Авг. 22, 2011 10:25:45

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

glob_fileinput(чтение один раз)

Есть еще модуль http://docs.python.org/library/fileinput.html



Офлайн

#3 Авг. 22, 2011 10:32:34

avdoshkin
От:
Зарегистрирован: 2009-08-08
Сообщения: 93
Репутация: +  -1  -
Профиль   Отправить e-mail  

glob_fileinput(чтение один раз)

doza_and
Есть еще модуль http://docs.python.org/library/fileinput.html
можно и так, но результат тот же
return [line for line in fileinput.input(glob.glob('test*.txt')) if args[0]==line]



Отредактировано (Авг. 22, 2011 10:35:48)

Офлайн

#4 Авг. 23, 2011 02:24:18

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

glob_fileinput(чтение один раз)

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



Офлайн

#5 Авг. 29, 2011 23:00:10

usmix
От:
Зарегистрирован: 2011-07-08
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

glob_fileinput(чтение один раз)

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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version