[Python-Dev] RE: Windows IO
Tim Peters
tim.one@comcast.net
Mon, 17 Mar 2003 17:09:54 -0500
[David LeBlanc]
> I don't have the capability to open an SF bug report.
It's not restricted -- anyone can open a bug report. You need a web browser
and an internet connection, of course.
> "isatty" is not documented at all under the Global Modules "sys" entry for
> Python 2.2.1 documentation
No, but why would it be? I gave you a link to the current docs before:
http://www.python.org/doc/current/lib/bltin-file-objects.html
Go there and search down for isatty. In 2.2.1, the link is this instead:
http://www.python.org/doc/2.2.1/lib/bltin-file-objects.html
> (sorry, I thought "PythonDoc" was a recognized
> name). The following doesn't work:
> J:\>python
> Python 2.2.1 (#34, Jul 16 2002, 16:25:42) [MSC 32 bit (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
> >>> stdout.isatty()
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> NameError: name 'stdout' is not defined
I showed concrete examples in the last msg. stdout lives in sys, as was
shown there:
>>> import sys
>>> sys.stdout.isatty()
True
>>>
That's in 2.3. I don't have 2.2.1. Here's under 2.0:
>>> import sys
>>> sys.stdout.isatty()
64
>>>
> >>> isatty(stdout)
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> NameError: name 'isatty' is not defined
> >>> isatty(__stdout__)
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> NameError: name 'isatty' is not defined
> >>> import os
> >>> os.stdout.isatty()
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> AttributeError: 'module' object has no attribute 'stdout'
> >>>
Please read the docs -- there's no reason to expect any of those to work.
> Is isatty a built-in,
No.
> a function of os only available on Unix,
No, although os.isatty exists on some platforms. fileobject.isatty() exists
on all platforms.
> or a function of sys available on all platforms?
It's not in sys on any platform.
> It appears to be a function in the sys module and so the doc for it should
> go there?
Nope, isatty() is never in sys. It's primarily a *method* on file objects,
as all the examples I've given have used. sys.stdin and sys.stdout are file
objects.
> Under the "os" entry it's:
> "isatty(fd)
> Return 1 if the file descriptor fd is open and connected to a tty(-like)
> device, else 0. Availability: Unix. "
>
> I don't see how to create a file() that is connected to stdout without
> importing sys...? Is there a way? If there is not, than file.isatty() is
> moot.
Sorry, I don't understand the question.
> So, really, what is the meaning of "64" as the return from
> sys.stdout.isatty()?
Before Python 2.3, it's simply the value Microsoft's isatty() function
returned. Python 2.3 translates it to a bool. Microsoft's docs say:
_isatty returns a nonzero value handle is associated with a character
device. Otherwise, _isatty returns 0.
The grammar errors are copied verbatim from their docs, BTW -- telling me
that didn't make sense won't help you <wink>.