On Sat, Feb 13, 2010 at 11:46 AM, Gnarlodious <gnarlodi...@gmail.com> wrote: > Hello, searched all over but no success. I want to have a script > output HTML if run in a browser and plain text if run in a Terminal. > In Python 2, I just said this: > > if len(sys.argv)==True:
That line doesn't make sense really as it is practically equivalent to: if len(sys.argv) == 1: Which, since argv always contains at least 1 element (the program's name), is essentially checking whether /no/ arguments were passed on the command line. Recall that issubclass(bool, int) is true and that True == 1 in Python due to details of said subclassing. Note also that "== True" is almost always unnecessary as it is essentially implicit in the "if". I suspect you instead meant to write: if len(sys.argv) > 0: which for the record can be written more idiomatically as: if sys.argv: # bool(some_list) is True if some_list is not empty Which, however, as I explained, is always true since argv is /never/ completely empty, and thus the test is useless. What you probably *wanted* is: if len(sys.argv) > 1: Which is effectively the opposite of my very first code snippet and checks whether we /were/ passed some arguments on the command line. > and it seemed to work. By happy accident I suspect, due to the aforementioned way == works between bools and ints and probably a logic error in your code. > Py3 must have broken that by sending a list > with the path to the script in BOTH the browser and Terminal. Is there > some newfangled way to determine what is running the script (hopefully > without a try wrapper)? How exactly are you running the script *"in"* the browser? Browsers can only execute JavaScript, not Python. Do you mean you're running it via a webserver? If so, there are /several/ possible ways of doing that, please explain exactly which you are using. Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list