[python] Divné chování os.walk
Filip Bartmann
filbar na centrum.cz
Středa Červen 1 17:20:57 CEST 2011
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
Další informace o konferenci Python