[Tutor] using cmd
Kent Johnson
kent37 at tds.net
Sat Mar 18 14:59:38 CET 2006
Christopher Spears wrote:
> I just completed an assignment out of Learning Python
> in which I used the Cmd class from the cmd module to
> create a little shell:
> My main question concerns the naming of functions such
> as:
>
> def do_ls(self, line):
> if line == '': dirs = [os.curdir]
> else: dirs = line.split()
> for dirname in dirs:
> print 'Listing of %s:' % dirname
> print '\n'.join(os.listdir(dirname))
>
> Originally, I called the function 'ls', but when I did
> that, the function didn't work when I typed 'ls' at
> the prompt. When I looked in the back of the book, I
> saw the name the authors gave their function, which
> was 'do_ls'. When I changed the function's name to
> do_ls, the function worked when I typed 'ls' at the
> prompt. Does anyone know why this happened?
Cmd uses introspection (using the built-in function getattr()) to find
the handler methods. For a command named 'ls' it looks for a method
'do_ls' to handle the command. You can also provide 'help_ls' to respond
to the user command 'help ls'. This naming convention is built-in to Cmd
so you have to use it for the module to work correctly.
Kent
More information about the Tutor
mailing list