Форум сайта python.su
14
import subprocess PIPE = subprocess.PIPE cmd = 'ping google.com -n 20' p = subprocess.Popen(cmd, shell=False, stdin=PIPE, stdout=PIPE, stderr=subprocess.STDOUT) for line in p.stdout: print line,
Отредактировано odnochlen (Окт. 30, 2012 03:51:42)
Офлайн
20
for line in iter(p.stdout.readline,''): print line,
line = 'Ping:' while line: line = p.stdout.readline() print line,
Офлайн
14
А какая разница между stream.readline и for line in stream?
Офлайн
20
У stream.next() вроде бы свой буффер.
http://docs.python.org/library/stdtypes.html#bltin-file-objects
In order to make a for loop the most efficient way of looping over the lines of a file (a very common operation), the next() method uses a hidden read-ahead buffer
Офлайн
14
Ну БЛИН. Два по сути одинаковых подхода, а работают по разному. Параша полная.
read-ahead - это же опережающее чтение, а тут, судя по всему, буферизация записи где-то.
Офлайн
14
Ага, таки не я один считаю это багом.
Совет там офигенный.
With the 3.0 version, the built-in open() is an alias for io.open;И куда совать этот io.open?
with 2.6, you have to use io.open() explicitely.
Отредактировано odnochlen (Окт. 7, 2012 22:30:07)
Офлайн