is for reliable?

pabloski at giochinternet.com pabloski at giochinternet.com
Mon May 7 15:46:41 EDT 2007


Hi to all I have a question about the for statement of python. I have the
following piece of code where cachefilesSet is a set that contains the
names of 1398 html files cached on my hard disk


for fn in cachefilesSet:
 
    fObj = codecs.open( baseDir + fn + '-header.html', 'r', 'iso-8859-1' )
    u = fObj.read()
    
    v = u.lower()
    rows = v.split('\x0a')
    
    contentType = ''
    
    for r in rows:
        if r.find('content-type') != -1:
            y = r.find(':')
            if y != -1:
                z = r.find(';', y)
                if z != -1:
                    contentType = r[y+1:z].strip()
                    cE = r[z+1:].strip()
                    characterEncoding = cE.strip('charset = ')
                else:
                    contenType = r[y+1:].strip()
                    characterEncoding = ''
            break
        
    if contentType == 'text/html':
        processHTMLfile( baseDir + fn + '-body.html', characterEncoding, cardinalita )
        
    fileCnt += 1
    if fileCnt % 100 == 0: print fileCnt

this code stops at the 473th file instead of reaching 1398

however I changed the for and substituted it with a while in this way

while cachefilesSet:
    fn = cachefilesSet.pop()
    .......
    .......

the while loop reaches the 1398th file and is some 3-4 times faster than
the for loop

How is this possible?



More information about the Python-list mailing list