Windows DOS box redirection

Tim Golden mail at timgolden.me.uk
Fri Oct 31 08:21:12 EDT 2008


Bill McClain wrote:
> On 2008-10-31, Glenn Linderman <v+python at g.nevcal.com> wrote:
> 
>> The problem with stdin/stdout is on Windows 2000 (and maybe the earlier 
>> NT?).  But not on XP or AFAIK Vista.
> 
>> It only occurs when a program is executed indirectly using the file 
>> associations instead of directly via the command line.
> 
>> File associations, are the Windows "let's do it a different way" 
>> alternative for Unix she-bang lines (#!/path/to/python).
> 
> Can you elaborate on this? I have some very simple command-line utilities I
> would like to make available on different platforms, but what little I knew
> about Windows is fading into the past.
> 
> This example:
> 
>     import sys
>     print sys.stdin.read()
> 
> ...works in the Windows XP dos box if I do:
> 
>     python demo.py < file.txt
> 
> ...but I get the error 9 for:
> 
>     demo.py < file.txt
> 
> Is there any way to make the second version work on Windows?

You've got a few options. Perhaps the simplest is to use something
like the effbots exemaker [1] which creates a stub for your script
but which is an .exe to the redirection should work. The user has
to have Python installed on the system (it's not a py2exe lookalike)
but it can make things like this simpler.

I believe -- but I've never really gone into this -- that the
setuptools extensions to distutils offer a way to do this as
part of the installation, so if you were having the scripts
installed via a setup.py (or setup.whetever) then that might
be the way.

Obviously py2exe (also a distutils extension) is another
possibility, altho' I would see it here as a fallback option
since it's a bit more heavyweight.

This is the MS article which describes the problem:

  http://support.microsoft.com/kb/321788

and suggests that it's fixed in XP SP1 but this
thread:

  http://mail.python.org/pipermail/python-list/2008-September/506466.html

suggests that maybe it's not.

TJG



More information about the Python-list mailing list