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@python.org
http://mail.python.org/mailman/listinfo/tutor


_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to