sys.stdin on windows
Tim Golden
mail at timgolden.me.uk
Wed Sep 3 06:16:12 EDT 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