[Zope-dev] Re: python.exe vs pythonw.exe difference?

Thomas Heller theller at python.net
Tue Mar 2 13:06:12 EST 2004


"Tim Peters" <tim at zope.com> writes:

> [moving this from comp.lang.python to zope-dev; it really belongs on a
>  Zope list, although schemes to change what pythonw does probably belong
>  on python-dev]

[I'm currently reading python-list via the gmane nntp interface, I don't
know whether there really is a gmane.comp.web.zope.devel newsgroup]

> [Thomas Heller]
>> It has been reported that writing to the original sys.stdout (and
>> maybe also sys.stderr) sooner or later raises an IOError when running
>> pythonw.exe, unless these are redirected.  Could this be the problem?
>
> It could, although I have no idea what WinXP does (and don't have access to
> XP).  Here's a Python program to try:
>
> """
> import sys
> if 1:   # edit to 1 for stdout, 0 for stderr
>     console = sys.stdout
> else:
>     console = sys.stderr
>
> import traceback
> tb = file('tb.txt', 'w')
>
> try:
>     i = 0
>     while True:
>         i += 1
>         console.write('.')
> except:
>     print >> tb, "Died when trying to write byte", i
>     traceback.print_exc(file=tb)
>     tb.close()
> """
>
> Under Win98SE, and regardless of whether it writes to stdout or stderr, it
> dies when run under pythonw, and tb.txt contains this after:
>
> Died when trying to write byte 4097
> Traceback (most recent call last):
>   File "wr.py", line 14, in ?
>     console.write('.')
> IOError: [Errno 9] Bad file descriptor

I get exactly the same, on Win XP Pro, both for sys.stdout and sys.stderr.

> The point of pythonw.exe is that no console is created or inherited, and the
> default stdin, stdout and stderr provided by MS C in that case are unusable
> (although the output flavors can appear to be usable until some secret MS
> limit is exceeded -- at least under Win98SE).

Since it seems XP shows the same behaviour than win98SE, has the
behaviour of Python changed?  Were IOErrors ignored on sys.stdout or
sys.stderr in earlier versions?

IIRC, /F first proposed that pythonw.exe should create a console to have
a place to show tracebacks.  Sounds like a good idea to me.

Thomas




More information about the Zope-Dev mailing list