Jak psal azurIt - měnit řídící pole v cyklu je nebezpečné - jinak ten skript dělá přesně co má:
- na řádku dirs.remove(name) - vyjme položku na kterou právě ukazuje cyklus - pointer pak ukazuje na následující položku - a poté ji na řádku continue přeskočí na následující Takže myslím, že konstrukce : if self.exclude_dir(dirname): continue; ... a za ní zpracování self.create_context(dirname,True); for file in files: filename=os.path.join(root,file); self.create_context(filename,False); bude naprosto funkční, a nebude třeba modifikovat řídící strukturu cyklu for Petr > ------------ Původní zpráva ------------ > Od: Filip Bartmann <fil...@centrum.cz> > Předmět: [python] Divné chování os.walk > Datum: 01.6.2011 17:21:41 > ---------------------------------------- > V programu mám tento kód: > --------------------------------------------------------------------------- > def list_dir(self,dir): > for root,dirs,files in os.walk(dir): > print dirs; > for name in dirs: > dirname=os.path.join(root,name); > if self.exclude_dir(dirname): > dirs.remove(name); > continue; > print name; > self.create_context(dirname,True); > for file in files: > filename=os.path.join(root,file); > self.create_context(filename,False); > > def exclude_dir(self,dir): > for e in self.exclude: > e=re.sub("/$","",e); > if re.search("^"+e,dir): > return True; > return False; > > -------------------------------------------------------------------------- > > Problém mi ale dělá podmínka exclude_dir, ona jaky by nevynechávala > jenom zadaný adresář, ale mimo to i jeden navíc. > > V dirs mám např(print dirs v kódu): ['usr', 'hosts', 'lib', 'selinux', > 'etc', 'lib64', 'var', 'dev', 'bin', 'proc'] a na vynechání mám určene > hosts. selinux a var, jenomže ono mi to projde jenom adresáře(print > name v kódu): > usr > lib64 > bin > > Tedy když chci vynechat třeba selinux, tak mi to vynechá i etc, ale > zajímavé je, že podadresáře toho v tomto případě etc to vezme, ale v té > samotné úrovni to přeskakuje jakoby oba dva adresáře. > > Předem děkuji za odpověď. > > Filip Bartmann > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > > > _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python