Redirecting stdin/stdout on Windows with '>'and '<'

Dirck Blaskey dirck at pacbell.net
Mon Apr 10 13:57:41 EDT 2000


Mark <markmcmahon at my-deja.com> wrote in message
news:8csvff$7pn$1 at nnrp1.deja.com...
> ...
> I would like to redirect output of my script with '>' or '<'
>
> If I try to redirect out then the file is created but has no contents.
>
> If I try to redirect in eg...
> "test.py < autoexec.bat"
>
> I get the following traceback
>
> Traceback (most recent call last):
>   File "C:\test.py", line 4, in ?
>     s = sys.stdin.read()
> IOError: [Errno 9] Bad file descriptor
>
> (Windows nt 4 sp 6, python 1.52)

Windows cmd.exe has a bug in file redirection when handling scripts.
The 'simple' fix is to use python on the command line:

python test.py < infile > outfile

(requires python in the path)

Attached is a Python script that uses an alternative syntax
to fix the problem:

test.py @infile !outfile

The script is also available from:
http://www.danbala.com/python/cmdfix
(currently down??)

Good luck

d
===========================
Dirck Blaskey
Danbala Software
dirck at danbala.com
http://www.danbala.com



begin 666 cmdfix.py
M(B(B#0H@(" @8VUD9FEX+G!Y("T at 9FEX('!I<&EN9R!P<F]B;&5M<R!W:71H
M(&-M9"YE>&4@#0H-"F-O;G1A8W0Z(&1I<F-K0&1A;F)A;&$N8V]M#0H-"E=I
M=&@@5VEN,S(@8VUD+F5X92P@)W!Y=&AO;B!S;VUE+G!Y(#YT)R!W;W)K<R!B
M=70@)W-O;64N<'D@/G0G(&1O97-N)W0N#0IC;61F:7 at N<'D at 9V5T<R!A<F]U
M;F0@=&AI<R!P<F]B;&5M(&)Y('5S:6YG(&%L=&5R;F%T:79E('!I<&EN9R!S
M>6YT87 at Z#0H@(" @<V]M92YP>2! :6YP=70@(6]U='!U=" C97)R;W(-"F]R
M#0H@(" @<V]M92YP>2! :6YP=70@(2-B;W1H;W5T<'5T#0H-"D%D9&EN9R N
M<'DO+G!Y8R!T;R!T:&4 at 96YV:7)O;FUE;G0 at 4$%42$585#T at 8VAA;F=E<R!T
M:&ES('1O('-I;7!L>3H-"B @("!S;VUE($!I;G!U=" A(V)O=&AO=71P=70-
M"@T*5&\@:6YS=&%L;"P at 8VAA;F=E('1H92!R96=I<W1R>2!E;G1R>2!F;W(@
M4'ET:&]N+D9I;&4O<VAE;&PO;W!E;B]C;VUM86YD('1O. at T*(" @($0Z7'!Y
M=&AO;EQP>71H;VXN97AE($0Z7'!Y=&AO;EQC;61F:7 at N<'D at 1#I<<'ET:&]N
M7'!Y=&AO;BYE>&4@(B4Q(B E*@T*4VEM:6QA<B!C:&%N9V5S(&%R92!R97%U
M:7)E9"!F;W(@4'ET:&]N+D-O;7!I;&5D1FEL92 H+G!Y8RD at 87,@=V5L;"X-
M"DEF('EO=2!P<F5C;VUP:6QE(&-M9&9I>"YP>2!Y;W4 at 8V%N('5S92!C;61F
M:7 at N<'EC(&EN(&ET)W,@<&QA8V4 at 9F]R( T*;&EK96QY('5N;F]T:6-E86)L
M92!P97)F;W)M86YC92!I;7!R;W9E;65N=',N#0H-"E1H:7,@<V-R:7!T(&ES
M('=R:71T96X at 9V5N97)I8V%L;'DL(&YO="!A<W-U;6EN9R!T:&4 at 97AE8W5T
M960@<')O8V5S<R!I<PT*<'ET:&]N+"!S;R!I="!W;W5L9"!A;'-O('=O<FL@
M9F]R('!E<FP@;W(@;W1H97(@<V-R:7!T:6YG(&QA;F=U86=E<RX-"@T*5&AE
M("$C('-Y;G1A>"!I<R!A;'-O('5S969U;"!F;W(@)VYO<FUA;"<@8V]M;6%N
M9',L(&)E8V%U<V4 at 8VUD(&YO<FUA;&QY#0IW;VXG="!P<F]D=6-E("=I;G1E
M<FQE879E9"<@<W1D;W5T+W-T9&5R<BX@(%5N9F]R='5N871E;'DL('1H92 N
M<'D-"F-O;F9I9W5R871I;VX@=VEL;"!P<F5P87)S92!T:&4 at 0"$C(&EF('1R
M>6EN9R!T;R!U<V4 at 8VUD9FEX+G!Y(&1I<F5C=&QY+ at T*#0I!<F=U;65N=',@
M8V]N=&%I;FEN9R!S<&%C97, at 87)E(')E87-S96UB;&5D(&%P<')O<')I871E
M;'DN#0HB(B(-"@T*:6UP;W)T('-Y<PT*:6UP;W)T('-T<FEN9PT*#0II;7!O
M<G0@<'EW:6YT>7!E<PT*:6UP;W)T('=I;C,R87!I#0II;7!O<G0@=VEN,S)E
M=F5N= T*:6UP;W)T('=I;C,R9FEL90T*:6UP;W)T('=I;C,R<')O8V5S<PT*
M#0ID968@;6%I;BAA<F=C+"!A<F=V*3H-"B @(" -"B @(" C(&]O<', at +2!I
M;F-O<G)E8W0@=7-A9V4-"B @(" -"B @("!I9B!N;W0 at 87)G8SH-"B @(" @
M(" @<')I;G0 at 7U]D;V-?7PT*(" @(" @("!R971U<FX-"@T*(" @(",@:6YP
M=70 at 9FEL92!N86UE('1A9V=E9"!W:71H($ -"B @(" -"B @("!I1FEL94YA
M;64@/2!A<F<H87)G=BP@)T G*0T*(" @(&EF(&E&:6QE3F%M93H-"B @(" @
M(" @:2 ](&]P96Y?<F5A9"AI1FEL94YA;64I.PT*(" @(" @("!W:6XS,F%P
M:2Y39713=&1(86YD;&4H=VEN,S)A<&DN4U1$7TE.4%547TA!3D1,12P@:2D-
M"@T*(" @(",@;W5T<'5T(&9I;&4@;F%M92!T86=G960@=VET:" A#0H@(" @
M;T9I;&5.86UE(#T at 87)G*&%R9W8L("<A)RD-"B @("!I9B!O1FEL94YA;64Z
M#0H@(" @(" @(&)O=&@@/2 P#0H@(" @(" @(",@)R$C)R!G:79E<R!M:7AE
M9"!S=&%N9&%R9"!A;F0 at 97)R;W(@;W5T<'5T+" -"B @(" @(" @(R @(" @
M(&)U="!R97-U;'1S(&-A;B!B92!A9F9E8W1E9"!B>2!B=69F97)I;F<@9&EF
M9F5R96YC97,-"B @(" @(" @:68@;T9I;&5.86UE6S!=/3TG(R<Z#0H@(" @
M(" @(" @("!B;W1H(#T@,3L-"B @(" @(" @(" @(&]&:6QE3F%M92 ](&]&
M:6QE3F%M95LQ.ET-"B @(" -"B @(" @(" @;R ](&]P96Y?=W)I=&4H;T9I
M;&5.86UE*0T*(" @(" @("!W:6XS,F%P:2Y39713=&1(86YD;&4H=VEN,S)A
M<&DN4U1$7T]55%!55%](04Y$3$4L(&\I#0H@(" @(" @(&EF(&)O=&@Z#0H@
M(" @(" @(" @("!W:6XS,F%P:2Y39713=&1(86YD;&4H=VEN,S)A<&DN4U1$
M7T524D]27TA!3D1,12P@;RD-"B @(" -"B @(" C(&5R<F]R(&9I;&4@;F%M
M92!T86=G960@=VET:" C#0H@(" @949I;&5.86UE(#T at 87)G*&%R9W8L("<C
M)RD-"B @("!I9B!E1FEL94YA;64Z#0H@(" @(" @(&4@/2!O<&5N7W=R:71E
M*&5&:6QE3F%M92D[#0H@(" @(" @('=I;C,R87!I+E-E=%-T9$AA;F1L92AW
M:6XS,F%P:2Y35$1?15)23U)?2$%.1$Q%+"!O*3L-"B @(" -"B @(" C('!U
M="!T:&4@<F5S="!O9B!T:&4 at 8V]M;6%N9"!B86-K('1O9V5T:&5R+"!A;F0@
M97AE8W5T92!I=" @(" -"B @("!C;60@/2!J;VEN*&%R9W8I#0H@(" @97AE
M8W5T92AC;60I(" @( T*#0HC(&%R9R M(')E='5R;B!A('1A9V=E9"!A<F=U
M;65N="!A;F0 at 9&5L971E(&ET(&9R;VT@=&AE(&QI<W0-"@T*9&5F(&%R9RAA
M<F=S+"!T86<I. at T*(" @(&D@/2 P#0H@(" @9F]R(&$@:6X at 87)G<SH-"B @
M(" @(" @:68 at 85LP72 ]/2!T86<Z#0H@(" @(" @(" @("!D96P at 87)G<UMI
M70T*(" @(" @(" @(" @<F5T=7)N(&%;,3I=#0H@(" @(" @(&D@/2!I("L@
M,0T*#0HC(&IO:6X@=&AE(&%R9W5M96YT<R!B86-K('1O9V5T:&5R+"!H86YD
M;&4 at 87)G=6UE;G1S('=I=&@@<W!A8V5S(&)Y('%U;W1I;F<-"@T*9&5F(&IO
M:6XH87)G<RDZ#0H@(" @:2 ](# -"B @("!F;W(@82!I;B!A<F=S. at T*(" @
M(" @("!I9B!S=')I;F<N9FEN9"AA+" G("<I(#X](# Z#0H@(" @(" @(" @
M("!A<F=S6VE=(#T@)R(E<R(G("4 at 80T*(" @(" @("!I(#T@:2 K(#$-"B @
M("!R971U<FX@<W1R:6YG+FIO:6XH87)G<RD-"@T*(R!W:6YD;W=S(&]P96X@
M<F]U=&EN97,-"@T*9&5F(&]P96Y?<F5A9"AF:6QE3F%M92DZ#0H@(" @<F5T
M=7)N(&]P96XH9FEL94YA;64L('=I;C,R9FEL92Y'14Y%4DE#7U)%040L('=I
M;C,R9FEL92Y/4$5.7T5825-424Y'*0T*#0ID968@;W!E;E]W<FET92AF:6QE
M3F%M92DZ#0H@(" @<F5T=7)N(&]P96XH9FEL94YA;64L('=I;C,R9FEL92Y'
M14Y%4DE#7U=2251%+"!W:6XS,F9I;&4N0U)%051%7T%,5T%94RD-"@T*9&5F
M(&]P96XH9FEL94YA;64L('=!8V-E<W,L('=$:7-P;W-I=&EO;BDZ#0H@(" @
M<V$@/2!P>7=I;G1Y<&5S+E-%0U5225197T%45%))0E5415,H*0T*(" @('-A
M+F));FAE<FET2&%N9&QE(#T@,3L-"B @("!R971U<FX@=VEN,S)F:6QE+D-R
M96%T949I;&4H9FEL94YA;64L('=!8V-E<W,L(# L('-A+"!W1&ES<&]S:71I
M;VXL(# L(# I#0H-"B,@=VEN9&]W<R!E>&5C=71E(&%N9"!W86ET#0H-"F1E
M9B!E>&5C=71E*&-O;6UA;F0I. at T*(" @('-T87)T=7!);F9O(#T@=VEN,S)P
M<F]C97-S+E-405)455!)3D9/*"D-"B @("!P:6YF;R ]('=I;C,R<')O8V5S
M<RY#<F5A=&50<F]C97-S*$YO;F4L(&-O;6UA;F0L($YO;F4 at +"!.;VYE+" Q
M+" P+" -"B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M($YO;F4L($YO;F4L('-T87)T=7!);F9O*0T*(" @(')E='5R;B!W:6XS,F5V
M96YT+E=A:71&;W)3:6YG;&5/8FIE8W0H<&EN9F];,%TL('=I;C,R979E;G0N
M24Y&24Y)5$4I#0H-"B,@:6YV;VME(&UA:6X@:68 at 87!P<F]P<FEA=&4-"@T*
M:68 at 7U]N86UE7U\@/3T@(E]?;6%I;E]?(CH-"B @("!M86EN*&QE;BAS>7,N
:87)G=BDM,2P@<WES+F%R9W9;,3I=*0T*#0H`
`
end




More information about the Python-list mailing list