Thanks for the reply. Unfortunately I cannot use a different format for the data since I'm really using Excel as a calculation engine. I don't own the authoring of these spreadsheets or even the data inside of them so I cannot change the format. The spreadsheets also are complicated enough and change frequently enough that it's not feasible for me to try to extract the logic and data inside of them into a different calculation engine (unless there's some existing tool which will do this for me?). My program is just one user of the spreadsheets among hundreds of human users. Unfortunately what's easy for the humans is always going to win out over what's easy for my program.
My concern with my option 2) is that I appear to be experiencing some level of contamination between calls that I can't resolve. It's not truly transactional in that a call into the system guarantees that it will leave everything how it found it. That's sort of why I thought up option 3). Let the OS help me somewhat to clean up. I strongly suspect that my option 2) is to some extent at the mercy of the python garbage collector. I'm not positive of that though. Thanks, Brandon -- http://mail.python.org/mailman/listinfo/python-list