detect interactivity
Dave Angel
davea at ieee.org
Tue Dec 29 20:28:52 EST 2009
Roald de Vries wrote:
> On Dec 29, 2009, at 8:34 PM, Dave Angel wrote:
>> Antoine Pitrou wrote:
>>> Le Tue, 29 Dec 2009 16:09:58 +0100, Roald de Vries a écrit :
>>>
>>>
>>>> Dear all,
>>>>
>>>> Is it possible for a Python script to detect whether it is running
>>>> interactively? It can be useful for e.g. defining functions that are
>>>> only useful in interactive mode.
>>>>
>>>
>>> Try the isatty() method (*) on e.g. stdin:
>>>
>>> $ python -c "import sys; print sys.stdin.isatty()"
>>> True
>>> $ echo "" | python -c "import sys; print sys.stdin.isatty()"
>>> False
>>>
>> Your test determines whether input is redirected. But I think the OP
>> was asking how to detect whether the script was being run from an
>> interpreter prompt.
>
> That was my question indeed. Is it possible?
>
>
If I had had a good answer, I would have supplied it in my earlier message.
The sneaky answer would be that a script cannot be used interactively,
as once you import it from the interpreter, it's a module, not a
script. So you can detect that it's not a script, by examing __name__
in the usual way. If it's a script, it'll have a value of "__main__".
But that won't tell you if you're running inside an IDE, or using the -i
switch on the Python command line, or probably a bunch of other
questions. I don't know of any "correct" answer, and I'm not sure what
the real use case is for knowing. Are you really going to somehow
define a different set of functions???
But I'm sure someone else will know something more explicitly tied to
the interactive session. If that's indeed what you want to test for.
DaveA
More information about the Python-list
mailing list