Форум сайта python.su
253
Уж в таких случаях смотрите документацию.
update - требует словарь, у вас список
pop удаляет по одной штучке а не группой.
Офлайн
0
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)
Офлайн
253
removed = [f for f in before if not f in after] if added: before.update(added) #добавить новую пару в словарь (не работает) if removed: before.pop(removed) # удалить пару из словаря (не работает)
vulnпросто задаете значение
before.pop('test1')
vulnЕсли не понимаете что делаете в коде, делайте print, пользуйтесь отладчиком, мне это сильно помогает :).
before.pop( [] )
Отредактировано doza_and (Авг. 29, 2015 00:03:26)
Офлайн
0
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)
Офлайн
568
vulnКакое-то нагромождение бреда
спасибо пока вот такая конструкция вроде работает
Отредактировано FishHook (Авг. 29, 2015 13:43:42)
Офлайн
24
Ага, учитывая что есть к примеру watchdog
Офлайн
0
FishHookне спорю, я новичок и открыл тему в ветке “Python для новичков ” но конструкция работает - основу взял отсюда: http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html
Какое-то нагромождение бреда
Офлайн
568
vulnНе, мы пойдем другим путём
по поводу бреда поделитесь своей конструкцией

if added: for x in added: before.setdefault(x,0)
Офлайн
0
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)
Офлайн
568
Ок, задам вопрос по другому, зачем вы используете setdefault, там где это не нужно?
Почему не так
before[x] = 0
Офлайн