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
--
http://mail.python.org/mailman/listinfo/python-list