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