[Chicago] __name__ == "__main__"

skip at pobox.com skip at pobox.com
Fri Oct 26 23:25:59 CEST 2007


    Chris> I'm guilty of not doing this often enough.  Sometimes I treat
    Chris> Python like a *gasp* scripting language.

Me as well.  When I have my thinking cap on I start with this:

    #!/usr/bin/env python

    """
    Python Script Template

    usage %(prog)s [ -h ] ...

    -h - print this documentation and exit.
    """

    import sys
    import getopt

    prog = sys.argv[0]

    def usage(msg=None):
        if msg is not None:
            print >> sys.stderr, msg
        print >> sys.stderr, __doc__.strip() % globals()

    def main(args):
        try:
            opts, args = getopt.getopt(args, "h", ["help"])
        except getopt.GetoptError, msg:
            usage(msg)
            return 1

        for opt, arg in opts:
            if opt in ("-h", "--help"):
                usage()
                return 0

        return 0

    if __name__ == "__main__":
        sys.exit(main(sys.argv[1:]))

Replacing getopt with optparse if I get *really* formal.  (I know optparse
is "better" for some definition of that word, but my fingers know how to
type getopt-using code with little or no involvement on the part of my
brain.)

Skip


More information about the Chicago mailing list