Il 24/10/09 15.33, crap0101 ha scritto: > Ho fatto qualche prova e così dovrebbe funzionare, ma penso anch'io che > la soluzione migliore sia popen > > crap0...@gns01:~/Scrivania$ cat echo2.py > import sys > > def gs (): > for line in sys.stdin: > yield line > > > if __name__ == '__main__': > try: > sys.stdout.writelines (gs ()) > except IOError: > pass > crap0...@gns01:~/Scrivania$ python -c "for x in range(200): print > 'line'*(x+1)" | python echo2.py | head -n 5 > line > lineline > linelineline > linelinelineline > linelinelinelineline > crap0...@gns01:~/Scrivania$ > Ok, problema caso semplice risolto!
Passiamo al caso reale, in realtà la funzione non è così inutile, ma è banale mix tra sort e grep: ### import sys lines = [] for line in sys.stdin: key = line.split()[0] try: lines.append((float(key), line)) except ValueError: pass try: sys.stdout.writelines(line for _, line in sorted(lines)) except IOError: pass ### <--- stesso comportamento scrivendolo con un for e sys.stdout.write(line) che ha come output (spesso...): ### $ python -c "for x in range(400): print (x if x%10 else ''), 'line '*20" > long.list && cat long.list | python bin/mlnsort.py | head -5 | sort -r 5 line line line line line line line line line line line line line line line line line line line line 4 line line line line line line line line line line line line line line line line line line line line 3 line line line line line line line line line line line line line line line line line line line line 2 line line line line line line line line line line line line line line line line line line line line 1 line line line line line line line line line line line line line line line line line line line line close failed in file object destructor: Error in sys.excepthook: Original exception was: ### Per fortuna è su stderr, però mi stupisco non ci sia una soluzione pulita... _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python