Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 28, 2015 20:22:00

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

мониторинг файлов

Уж в таких случаях смотрите документацию.
update - требует словарь, у вас список
pop удаляет по одной штучке а не группой.



Офлайн

#2 Авг. 28, 2015 21:50:32

vuln
Зарегистрирован: 2015-08-25
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

мониторинг файлов

doza_and
Уж в таких случаях смотрите документацию.update - требует словарь, у вас списокpop удаляет по одной штучке а не группой.
мне как раз по одной надо удалить (или добавлять )

вот такая конструкция удаляет
import os, time
path_to_watch = "c:\\temp\\"
before = dict ([(f, 0) for f in os.listdir (path_to_watch)])
print (before)
before.pop('test1')
print (before)

результат выполнения :
{'test1.zip': 0, 'test1': 0, 'The Crossroads Of Time.jpg': 0, 'atmelstudio.txt': 0}
{'test1.zip': 0, 'The Crossroads Of Time.jpg': 0, 'atmelstudio.txt': 0}

Отредактировано vuln (Авг. 28, 2015 21:53:39)

Офлайн

#3 Авг. 29, 2015 00:00:40

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

мониторинг файлов

 
removed = [f for f in before if not f in after]
  if added: before.update(added)  #добавить  новую пару в словарь (не работает)
  if removed: before.pop(removed)  # удалить   пару из словаря (не работает)
removed это list а там где работает вы делаете
vuln
before.pop('test1')
просто задаете значение
протестируйте
vuln
before.pop( [] )
Если не понимаете что делаете в коде, делайте print, пользуйтесь отладчиком, мне это сильно помогает :).



Отредактировано doza_and (Авг. 29, 2015 00:03:26)

Офлайн

#4 Авг. 29, 2015 13:40:59

vuln
Зарегистрирован: 2015-08-25
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

мониторинг файлов

doza_and
спасибо пока вот такая конструкция вроде работает
import os, time
path_to_watch = "c:\\temp\\"
before = dict ([(f, 0) for f in os.listdir (path_to_watch)])
while 1:
  time.sleep (3)
  after = dict ([(f, 0) for f in os.listdir (path_to_watch)])
  added = [f for f in after if not f in before]
  removed = [f for f in before if not f in after]
  
  if added:
    for x in added:
      before.setdefault(x,0)
  if removed:
    for x in removed:
      before.pop(x)
  for x in before:
      before[x] += 1
      if before[x] == 100:
         print ('Alarm!!!!')
  print (before)

Офлайн

#5 Авг. 29, 2015 13:43:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

мониторинг файлов

vuln
спасибо пока вот такая конструкция вроде работает
Какое-то нагромождение бреда



Отредактировано FishHook (Авг. 29, 2015 13:43:42)

Офлайн

#6 Авг. 29, 2015 14:18:46

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

мониторинг файлов

Ага, учитывая что есть к примеру watchdog

Офлайн

#7 Авг. 29, 2015 14:59:55

vuln
Зарегистрирован: 2015-08-25
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

мониторинг файлов

FishHook
Какое-то нагромождение бреда
не спорю, я новичок и открыл тему в ветке “Python для новичков ” но конструкция работает - основу взял отсюда: http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html
по поводу бреда поделитесь своей конструкцией так сказать наставьте на путь истинный

Офлайн

#8 Авг. 29, 2015 15:24:20

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

мониторинг файлов

vuln
по поводу бреда поделитесь своей конструкцией
Не, мы пойдем другим путём
вы будете объяснять свой код. Например, что вы хотите получить вот этим
  if added:
    for x in added:
      before.setdefault(x,0)
вопрос конкретный: зачем setdefault?



Офлайн

#9 Авг. 29, 2015 15:29:21

vuln
Зарегистрирован: 2015-08-25
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

мониторинг файлов

FishHook
вопрос конкретный: зачем setdefault?
добавляю новую пару в словарь

dict.setdefault(key) - возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ с значением default (по умолчанию None).
взято отсюда http://pythonworld.ru/tipy-dannyx-v-python/slovari-dict-funkcii-i-metody-slovarej.html

Отредактировано vuln (Авг. 29, 2015 15:29:48)

Офлайн

#10 Авг. 31, 2015 12:27:45

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

мониторинг файлов

Ок, задам вопрос по другому, зачем вы используете setdefault, там где это не нужно?
Почему не так

before[x] = 0



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version