On Dec 30, 2009, at 2:28 AM, Dave Angel wrote:
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???
I'm using a database, and want to use python interactively to
manipulate it. On the other hand, I also want to be able to use it non-
interactively. In that case, it would be a waste of CPU to load the
function/class definitions meant for interactive use.
--
http://mail.python.org/mailman/listinfo/python-list