The sys Module


A Byte of Python 

Go to the Table of Contents. Visit the Gifcom web site.

The Python Standard Library is available with every Python installation. It contains a huge number of very useful modules. It is important that you become familiar with the Python Standard Library since most of your problems can be solved more easily and quickly if you are familiar with this library of modules.

We will explore some of the commonly used modules in this library. You can find complete details for all of the modules in the Python Standard Library in the 'Library Reference' section in the documentation that comes with your Python installation.

The sys module

The sys module contains system-specific functionality. we have already seen that the sys.argv list contains the command-line arguments.

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)
				
				

Output

				
$ 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!
				
				

How It Works

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.