for name in dirs:<br />
...<br />
     dirs.remove(name);<br />
 <br />
<br />
nemal by si editovat objekt, ktory pouzivas v cykle for, hlavne ak sa jedna o obycajne pole (co zrejme ano).<br />
<br />
<br />
 <br />
 ______________________________________________________________<br />
 > Od: "Filip Bartmann" <filbar@centrum.cz><br />
 > Komu: python@py.cz<br />
 > Dátum: 01.06.2011 17:21<br />
 > Predmet: [python] Divné chování os.walk<br />
 ><br />
 V programu mám tento kód:<br />
 ---------------------------------------------------------------------------<br />
 def list_dir(self,dir):<br />
                for root,dirs,files in os.walk(dir):<br />
                        print dirs;<br />
                        for name in dirs:<br />
                                dirname=os.path.join(root,name);<br />
                                if self.exclude_dir(dirname):<br />
                                        dirs.remove(name);<br />
 continue;<br />
                                print name;<br />
                                self.create_context(dirname,True);<br />
                        for file in files:<br />
                                filename=os.path.join(root,file);<br />
                                self.create_context(filename,False);<br />
        <br />
        def exclude_dir(self,dir):<br />
                for e in self.exclude:<br />
                        e=re.sub("/$","",e);<br />
                        if re.search("^"+e,dir):<br />
                                return True;<br />
                return False;<br />
 <br />
 --------------------------------------------------------------------------<br />
 <br />
 Problém mi ale dělá podmínka exclude_dir, ona jaky by nevynechávala<br />
 jenom zadaný adresář, ale mimo to i jeden navíc.<br />
 <br />
 V dirs mám např(print dirs v kódu): ['usr', 'hosts', 'lib', 'selinux',<br />
 'etc', 'lib64', 'var', 'dev', 'bin', 'proc'] a na vynechání mám určene<br />
 hosts. selinux a var, jenomže ono mi to projde jenom adresáře(print<br />
 name v kódu):<br />
 usr<br />
 lib64<br />
 bin<br />
 <br />
 Tedy když chci vynechat třeba selinux, tak mi to vynechá i etc, ale<br />
 zajímavé je, že podadresáře toho v tomto případě etc to vezme, ale v té<br />
 samotné úrovni to přeskakuje jakoby oba dva adresáře.<br />
 <br />
 Předem děkuji za odpověď.<br />
 <br />
 Filip Bartmann<br />
 _______________________________________________<br />
 Python mailing list<br />
 Python@py.cz<br />
 <a href="http://www.py.cz/mailman/listinfo/python">http://www.py.cz/mailman/listinfo/python</a><br />