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