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 />