assumptions to keep the code simple the "todirectory is assumed not to exist initiallyand exceptions are not ignored along the way here it is copying the book examples tree from the prior edition again on windowsc:\pp \toolsset pythonpath pythonpath= :\users\mark\stuff\books\ \pp \dev\examples :\pp \toolsrmdir / copytemp copytempare you sure ( / ) :\pp \toolsvisitor_cpall py :\temp\pp \examples copytemp copying copied files directories in seconds :\pp \toolsfc / copytemp\pp \launcher py :\temp\pp \examples\pp \launcher py comparing files copytemp\pp \launcher py and :\temp\pp \examples\pp \launcher py fcno differences encountered despite the extra string slicing going onthis version seems to run just as fast as the original (the actual difference can be chalked up to system load variationsfor tracing purposesthis version also prints all the "fromand "tocopy paths during the traversal if you pass in third argument on the command linec:\pp \toolsrmdir / copytemp copytempare you sure ( / ) :\pp \toolsvisitor_cpall py :\temp\pp \examples copytemp copying :\temp\pp \examples =copytempf :\temp\pp \examples\readme-root txt =copytemp\readme-root txt :\temp\pp \examples\pp =copytemp\pp more lines omittedtry this on your own for the full output other visitor examples (externalalthough the visitor is widely applicablewe don' have space to explore additional subclasses in this book for more example clients and use casessee the following examples in book' examples distribution package described in the prefacetools\visitor_collect py collects and/or prints files containing search string tools\visitor_poundbang py replaces directory paths in "#!lines at the top of unix scripts tools\visitor_cleanpyc py is visitor-based recoding of our earlier bytecode cleanup scripts tools\visitor_bigpy py is visitor-based version of the "biggest fileexample at the start of this visitorwalking directories "++