[Tutor] directory traversal help

Michael python at mrfab.info
Sun Jul 6 11:42:44 CEST 2008


Further to this query I actually hit the manuals and found that their 
already was a walk function. My final solution was thus...
Please note it is heavily commented because I am a teacher and created 
this for a student :-)

# Will create a listing in a file called dirlist.txt of all the files in 
all
# the directories of the directory it is started from.

import os   # imports all the functions in the os module (operating 
system functions)

cwd = os.getcwd()   # gets the current working directory and places it 
in the variable cwd

myfile=open("dirlist.txt","w")  # creates the file dirlist.txt ready for 
writing using the variable myfiles

# the walk function returns the current directory in root, the 
directories in dirs
# and the files in root in files. By using the for loop it traverses 
every folder
# from the starting folder.

for root, dirs, files in os.walk(cwd):
   myfile.write(root + "\n")   # writes to dirlist.txt the current 
directory name
   for thefiles in files:      # will iterate all the files in the 
current directory
       myfile.write("___________ " + thefiles + "\n") # writes the 
filename to dirlist.txt. the

myfile.close() # Cleanly saves and closes the file dirlist.txt




# Note: the "\n" in the write lines adds the newline character so that 
the next write starts on a newline
> Hi
>
> I have modified an algorithm from the think like a python programmer 
> book for traversing folders and printing the files in those folders. 
> It works for my original purposes but I have a students that wants to 
> use it to run from a root folder, problem is that it crashes on the 
> recycling bin as well as hidden and other types of folders. Is there a 
> way to modify it to skip folders that would make it crash? I have 
> tried using exception handling (try) and other functions in the os 
> module but I cannot work it out. Any ideas? thanks
>
> Michael
>
> import os
> import string
>
> def walk(dir):
>    for name in os.listdir(dir):
>        path = os.path.join(dir,name)
>        if os.path.isfile(path):
>            beg = string.rfind(path,'\Student')
>            end = len(path)
>            filename = path[beg:end]
>            #print "___________ ",filename
>            print "___________ ",name
>
>        else:
>            print path
>            walk (path)
>
> cwd = os.getcwd()
> walk(cwd)
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>



More information about the Tutor mailing list