Форум сайта python.su
Всем привет. Есть функция которая юзает subprocess :
def tail_f(): f = subprocess.Popen(['tail','-F','/home/defremov/Viewer/file1'],\ stdout=subprocess.PIPE,stderr=subprocess.PIPE) while True: sleep(1) print f.stdout.readline()
Офлайн
Farsatanisу тебя в f находится вывод, сразу его и отправляй
приджониться к потоку вывода ,чтобы перехватить его и куды нито отправить?
Офлайн
Т.е , грубо говоря что то такое будет работать корректоно ?
def tail_f(): f = subprocess.Popen(['tail','-F','/home/defremov/Viewer/file1'],\ stdout=subprocess.PIPE,stderr=subprocess.PIPE) while True: sleep(1) print f.stdout.readline() return f.stdout.readline
Офлайн
> Т.е , грубо говоря что то такое будет работать корректоно ?
Крнечно нет. Я бы смотрел в сторону генераторов.
Онлайн
Ок , тогда вот так.
def tail_f(): f = subprocess.Popen(['tail','-F','/home/defremov/Viewer/file1'],\ stdout=subprocess.PIPE,stderr=subprocess.PIPE) while True: sleep(1) yield f.stdout.readline
for i in tail(): print i
Офлайн
> Ок , тогда вот так.
Цикл убери , readline - метод.
> А мне нужно , чтобы был именно какой то ,наверное ,список, чтобы с ним в дальнейшем взаимодействовать, но при этом должно остаться чтобы этот список пополнялся.
В чём проблема?
spisok = [] for i in tail(): spisok.append(i) # И дальше взаимодействуешь
Онлайн
Наверное я чета не догоняю просто : На данный момент моя шизонутая функция эмулирует tail -f ,ну или где то рядом(без генератора) : выводятся последние стрки фала, и она продолжает висеть - ждать новых поступлений в stdout.
Если убрать цикл , то будет выводиттся только первая строка.
И опять же
spisok = [] for i in tail(): spisok.append(i)
Отредактировано Farsatanis (Ноя. 6, 2013 13:12:31)
Офлайн
>Если убрать цикл , то будет выводиттся только первая строка.
Имелось в виду
while True: sleep(1)
Онлайн
Может оно и прально избивиться от True …. проблем сразу станет меньше.
А нужен мне вееееесь stdout ,а не его кусочки
Офлайн
Все, сделал. По крайней мере выглядит так как надо
Спасибо)
Офлайн