Packing and Unpacking Files
Many moons ago (about 10 years), I used machines that
had no tools for bundling files into a single package for easy transport. Here is the
situation: you have a large set of text files laying around that you
need to transfer to another computer. These days, tools like tar are widely available for packaging many
files into a single file that can be copied, uploaded, mailed, or
otherwise transferred in a single step. As mentioned in an earlier
footnote, even Python itself has grown to support zip and tar archives
in the standard library (see the zipfile and tarfile modules in the library
reference).
Before I managed to install such tools on my PC, though, portable Python scripts served just as well. Example 6-6 copies all of the files listed on the command line to the standard output stream, separated by marker lines.
Example 6-6. PP3E\System\App\Clients\textpack.py
#!/usr/local/bin/python
import sys # load the system module
marker = ':'*10 + 'textpak=>' # hopefully unique separator
def pack( ):
for name in sys.argv[1:]: # for all command-line arguments
input = open(name, 'r') # open the next input file
print marker + name # write a separator line
print input.read( ), # and write the file's contents
if _ _name_ _ == '_ _main_ _': pack( ) # pack files listed on cmdlineThe first line in this file is a Python comment (#...), but it also gives the path to the
Python interpreter using the Unix executable-script trick discussed in
Chapter 3. If we give
textpack.py ...