> [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
> console = sys.stderr
> import traceback
> tb = file('tb.txt', 'w')
> i = 0
> while True:
> i += 1
> print >> tb, "Died when trying to write byte", i
> 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 ?
> 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.