The sys
module contains system-specific functionality. we have already
seen that the sys.argv
list contains the command-line arguments.
Example 14.1. Using sys.argv
#!/usr/bin/python # Filename: cat.py import sys def readfile(filename): '''Print a file to the standard output.''' f = file(filename) while True: line = f.readline() if len(line) == 0: break print line, # notice comma f.close() # Script starts from here if len(sys.argv) < 2: print 'No action specified.' sys.exit() if sys.argv[1].startswith('--'): option = sys.argv[1][2:] # fetch sys.argv[1] but without the first two characters if option == 'version': print 'Version 1.2' elif option == 'help': print '''\ This program prints files to the standard output. Any number of files can be specified. Options include: --version : Prints the version number --help : Display this help''' else: print 'Unknown option.' sys.exit() else: for filename in sys.argv[1:]: readfile(filename)
$ python cat.py No action specified. $ python cat.py --help This program prints files to the standard output. Any number of files can be specified. Options include: --version : Prints the version number --help : Display this help $ python cat.py --version Version 1.2 $ python cat.py --nonsense Unknown option. $ python cat.py poem.txt Programming is fun When the work is done if you wanna make your work also fun: use Python!
This program tries to mimic the cat command familiar to Linux/Unix users. You just speicfy the names of some text files and it will print them to the output.
When a Python program is run i.e. not an interactive mode, there is always
at least one item in the sys.argv
list which is the name
of the current program being run and is available as
sys.argv[0]
since Python starts counting from 0. Other
command line arguments follow this item.
To make the program user-friendly we have supplied certain options that the
user can specify to learn more about the program. We use the first argument
to check if any options have been specified to our program. If the
--version
option is used, the version number of the program
is printed. Similarly, when the --help
option is specified,
we give a bit of explanation about the program. We make use of the
sys.exit
function to exit the running program. As always,
see help(sys.exit)
for more details.
When no options are specified and filenames are passed to the program, it simply prints out each line of each file, one after the other in the order specified on the command line.
As an aside, the name cat is short for concatenate which is basically what this program does - it can print out a file or attach/concatenate two or more files together in the output.
The sys.version
string gives you information about the version
of Python that you have installed. The sys.version_info
tuple
gives an easier way of enabling Python-version specific parts of your program.
[swaroop@localhost code]$ python >>> import sys >>> sys.version '2.3.4 (#1, Oct 26 2004, 16:42:40) \n[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)]' >>> sys.version_info (2, 3, 4, 'final', 0)
For experienced programmers, other items of interest in the sys
module include sys.stdin
, sys.stdout
and
sys.stderr
which correspond to the standard input, standard
output and standard error streams of your program respectively.