April 1999
Beginner
384 pages
11h 15m
English
Redirecting stdout. This is simple: all you have to do is to replace the first line with:
import fileinput, sys, string # no change here sys.stdout = open(sys.argv[-1], 'w') # open the output file del sys.argv[-1] # we've dealt with this argument ... # continue as before
Writing a simple
shell. Mostly, the following script, which implements the
Unix set of commands (well, some of them) should be self-explanatory.
Note that we’ve only put a “help” message for the
ls command, but there should be one for all the
other commands as well:
import cmd, os, string, sys, shutil class UnixShell(cmd.Cmd): def do_EOF(self, line): """ The do_EOF command is called when the user presses Ctrl-D (unix) or Ctrl-Z (PC). """ sys.exit() def help_ls(self): print "ls <directory>: list the contents of the specified directory" print " (current directory used by default)" def do_ls(self, line): # 'ls' by itself means 'list current directory' if line == '': dirs = [os.curdir] else: dirs = string.split(line) for dirname in dirs: print 'Listing of %s:' % dirname print string.join(os.listdir(dirname), '\n') def do_cd(self, dirname): # 'cd' by itself means 'go home' if dirname == '': dirname = os.environ['HOME'] os.chdir(dirname) def do_mkdir(self, dirname): os.mkdir(dirname) def do_cp(self, line): words = string.split(line) sourcefiles,target = words[:-1], words[-1] # target could be a dir for sourcefile in sourcefiles: shutil.copy(sourcefile, target) def do_mv(self, line): source, target = string.split(line) ...