New submission from Jacek <[EMAIL PROTECTED]>: Hi
I wrote my first program in python, and I found bug in it. I explain it in example (I do it under Windows XP): 1. At the begining create some directories: >mkdir .\test\ >mkdir .\test\.svn >mkdir .\test\cvs >mkdir .\test\pdk 2. Next create file ".\bug.py" with content: import re import os print 'example1:' lpatternDirSkip = re.compile(r'(^cvs$)|(^[.].*)', re.IGNORECASE) for lroot, ldirs, lfiles in os.walk(r'.\\test\\'): ldirIndex = 0 for ldirName in ldirs: if lpatternDirSkip.search(ldirName): ldirs.remove(ldirName) print ldirs print 'example2:' lpatternDirSkip = re.compile(r'(^cvs$)|(^[.].*)', re.IGNORECASE) for lroot, ldirs, lfiles in os.walk('.\\test\\'): ldirIndex = 0 while ldirIndex < len(ldirs): if lpatternDirSkip.search(ldirs[ldirIndex]): ldirs.remove(ldirs[ldirIndex]) ldirIndex -= 1 ldirIndex += 1 print ldirs 3. Next run cmd.exe (in the same directory) and type "bug.py". Result is: example1: ['cvs', 'pdk'] [] [] example2: ['pdk'] [] 5. Comment: In this example I want to remove from list of directories (ldirs) every hiden directories (like ".svn") and directory "CVS". Example1 is the comfortable way, but it products wrong result (the "cvs" directory is not remove). This is only happen when I remove some directories from the list. I don't care that there was deleted one element from the list. It should be special case, and enumeration on the rest elements should be correct. Example2 works correcty (it's work around of this problem). Jacek Jaworski ---------- components: Build messages: 71230 nosy: jacek severity: normal status: open title: list enumeration corrupt when remove() type: behavior versions: Python 2.5 _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue3568> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com