sys.stdin on windows

Tim Golden mail at timgolden.me.uk
Wed Sep 3 12:16:12 CEST 2008


Gabriel Genellina wrote:
> En Wed, 03 Sep 2008 06:16:03 -0300, zugnush at gmail.com 
> <zugnush at gmail.com> escribi�:
> 
>> I often grep particular patterns out of large logfiles and then
>> pipeline the output to sort and uniq -c
>> I thought today to knock up a script to do the counting in a python
>> dict.
>>
>> This seems work in linux
>>
>> $ cat count.py
>> #!/usr/bin/env python
>> import sys
>> from collections import defaultdict
>> accumulator=defaultdict(int)
>> for line in sys.stdin.readlines():
>>     accumulator[line.strip()]+=1
>> print "contents,count"
>> for key in accumulator.keys():
>>     print key,",",accumulator[key]
>>
>> $ cat test | ./count.py
>> contents,count
>>  , 1
>> 23 , 1
>> 1 , 1
>> 3 , 2
>> 2 , 2
>> 5 , 3
>>
>> When I try to run the same thing on windows I get
>> IOError: [Error 9] Bad file descriptor
>>
>> How can I make this more windows friendly?
> 
> Explicitely invoking the interpreter worked for me. That is, these two 
> commands worked fine:
> 
> type test.txt | python count.py
> python count.py < test.txt
> 
> But I cannot explain *why* it doesn't work the other way.
> 

Known bug in NT-based file association. I'll try 
to find an online reference, but that's basically
what it comes to. I think you can faff-about with
batch files to achieve the effect, but I can't
quite remember.

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

TJG



More information about the Python-list mailing list