Question about 'if __name__ == "__main__":'

Bill Anderson banderson at hp.com
Tue Feb 3 03:15:40 EST 2004


On Mon, 02 Feb 2004 23:33:42 -0800, Amy G wrote:

> I have a program that needs a little help.
> Right now the program runs in my crontab.  When it runs, it sets a few
> variables based on a query to a MySQL database.  I would like to modify it
> so that it can run as it is... or if arguments are supplied, use those
> instead of querrying the database.
> 
> Will using this statement help me out?
> 
> if __name__ == "__main__":
> 
> I seem to recall that this returns true if it is run as a script by python,
> rather than as a module from another prog.  Since I am going to run this
> from a command line - or from my crontab... it will always return true as
> far as I can tell.

This allows you to set up your script to act differently when imported vs.
ran. For return code, you can put in things like "sys.exit(returnvalue)"
to exit w/non true.


> Any suggestions to help me out.
> 
> Ultimately I want something like this pseudocode...
> 
> if (no args supplied):
>     curs.execute("""SELECT userid FROM users""")
>     data = curs.fetchall()
> else:
>     data = sys.argv[1]


Personally, I'd go with:

try:
  data = sys.argv[1]
except IndexError:
  curs.execute(...)
  data = curs.fetchall()

"Better to Ask Forgivness Than Permission"-ly y'rs.

Bill



More information about the Python-list mailing list