Ritesh Raj Sarraf wrote: > def copy_first_match(repository, filename, dest_dir): # aka > walk_tree_copy() > for path, file in files(repository): > if file == filename: > try: > shutil.copy(os.path.join(path, file), dest_dir) > sys.stdout.write("%s copied from local cache %s." % > (file, repository)) > except shutil.Error: > sys.stdout.write("%s is available in %s. Skipping > Copy!" % (file, dest_dir)) > return True > return False > > All I've added is the exception check because in case "file" is > available in "dest_dir", I want to display a message. > Since I'm still new and learning will be great if you let me know if > this is the proper way or not.
I prefer to let the exception propagate. As you wrote it, the code calling copy_first_match() has no way of knowing whether a file was copied or not. If you don't want to bother with exceptions in the calling code I'd slightly modify the try...except: try: # copy except (shutil.Error, OSError), e: # print failure message return False I. e. - catch OSError, too. I think shutil.copy() is more likely to raise an OSError than a shutil.Error. - return False if an exception occurs. That way you can test if something went wrong like so: if not copy_first_match(...): print "file not found or unable to copy it" Peter -- http://mail.python.org/mailman/listinfo/python-list