There is something I can't figure out about the following code (using python 
2.7.3):

def return_tree_files(rootpath, pattern):
    for root, dirs, files in os.walk(rootpath):
        i = [os.path.join(root, filename) for filename in fnmatch.filter(files, 
pattern)]
        return i

I thought the function would return a list of lists of filenames in the 
rootpath and all subfolders.  Instead I get only the filenames that match the 
pattern in the rootpath, it doesn't go into the subfolders.

If I replace the last line with 'print i' instead of 'return i' I get output 
closer to what I expect but what I really want is a list of lists I can use 
elsewhere.

I know I could collect these and append them but I am trying to understand list 
comprehensions and os.walk - but I have hit a wall.

Why does the list comprehension only go down the rootpath once and stop, not 
walking to the subfolders?

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to