CHAPTER 6
Complete System Programs
“The Greps of Wrath”
This chapter wraps up our look at the system interfaces domain in Python by presenting
a collection of larger Python scripts that do real systems work—comparing and copying
directory trees, splitting files, searching files and directories, testing other programs,
configuring launched programs’ shell environments, and so on. The examples here are
Python system utility programs that illustrate typical tasks and techniques in this do-
main and focus on applying built-in tools, such as file and directory tree processing.
Although the main point of this case-study chapter is to give you a feel for realistic
scripts in action, the size of these examples also gives us an opportunity to see Python’s
support for development paradigms like object-oriented programming (OOP) and re-
use at work. It’s really only in the context of nontrivial programs such as the ones we’ll
meet here that such tools begin to bear tangible fruit. This chapter also emphasizes the
“why” of system tools, not just the “how”; along the way, I’ll point out real-world needs
met by the examples we’ll study, to help you put the details in context.
One note up front: this chapter moves quickly, and a few of its examples are largely
listed just for independent study. Because all the scripts here are heavily documented
and use Python system tools described in the preceding chapters, I won’t go through
all the code in exhaustive detail. You should read the source code listings and experi-
ment with these programs on your own computer to get a better feel for how to combine
system interfaces to accomplish realistic tasks. All are available in source code form in
the book’s examples distribution and most work on all major platforms.
I should also mention that most of these are programs I have really used, not examples
written just for this book. They were coded over a period of years and perform widely
differing tasks, so there is no obvious common thread to connect the dots here other
than need. On the other hand, they help explain why system tools are useful in the first
place, demonstrate larger development concepts that simpler examples cannot, and
bear collective witness to the simplicity and portability of automating system tasks with
Python. Once you’ve mastered the basics, you’ll wish you had done so sooner.
271
Do
wnload from Wow! eBook <www.wowebook.com>