[python] Divné chování os.walk
azurIt
azurit na pobox.sk
Středa Červen 1 17:30:07 CEST 2011
for name in dirs:
...
dirs.remove(name);
nemal by si editovat objekt, ktory pouzivas v cykle for, hlavne ak sa jedna o obycajne pole (co zrejme ano).
______________________________________________________________
> Od: "Filip Bartmann"
> Komu: python na py.cz
> Dátum: 01.06.2011 17:21
> Predmet: [python] Divné chování os.walk
>
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 na py.cz
http://www.py.cz/mailman/listinfo/python
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20110601/52dcdb28/attachment.html>
Další informace o konferenci Python