Accessing variables in __main__ from modules....

Eric Renouf erenouf at opticominc.com
Mon Apr 9 22:41:53 EDT 2001


How about writing a function in a module that everyone can import called
like dprint or something like that that you can pass the string to print
to and it will decide whether or not to actually print it based on
whether or not --debug was in sys.argv, which could even be set in a
variable there by __main__ or something like that.

nanotech at europa.com wrote:

> All:
>
> When writing programs, I like to add print statements that are only
> displayed when the user provides a command line switch such as '--
> debug'.
>
>   Ex:  %myprog spam.txt ham
>        Found the word 'ham' in 'spam.txt' 45 times
>
>        %myprog --debug spam.txt ham
>        -I-: Reading 'spam.txt'....has 213 lines....
>        Found the word 'ham' in 'spam.txt' 45 times
>
> Now, say most of the work is done in a module 'spam.py'. If I wrote
> code in this module like:
>
>   lines=open(filename).readlines()
>   if (DEBUG):
>     print "-I-: Reading '%s'....has %s lines...."%(filename,len
> (lines))
>
> DEBUG would be searched for at the module scope. But I want it to
> look for DEBUG back in __main__, like:
>
>   if (sys.modules["__main__"].DEBUG):
>     print "-I-: Reading '%s'....has %s lines...."%len(filename,lines)
>
> Is this the "best" way to access variable in the "__main__" scope?
> How else might I solve this (in the python way)??
>
> Quentin Crain
>
> Note: I might load many modules all wanting to know if DEBUG is
> turned on. I do not want to pass DEBUG to functions or classes and I
> do not want to set a module variable DEBUG to the same value
> (module1.DEBUG=DEBUG, module2.DEBUG=DEBUG, etc. in __main__). Unless
> these are "better" solutions! :)

--
Eric Renouf
Software Engineer
Opticom Inc.
www.getiview.com


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20010410/526894f3/attachment.html>


More information about the Python-list mailing list