2017-01-28 18 views
0

Я пытаюсь обрабатывать изображения с камеры на своем сервере и получать информацию после обработки на моей локальной машине в режиме реального времени. Я могу получить необходимую информацию в качестве конечных выходов на моем сервере, но я не могу поместить эту информацию в свой код python на локальном компьютере, пока не будет запущена моя серверная программа. Я пробовал этот код:Чтение терминального вывода в реальном времени с сервера

cmd="sshpass -p 'pass' ssh -Y [email protected] -t 'process_image; bash -l'" 
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1) 
for line in iter(p.stdout.readline, b''): 
    print(line) 
    p.stdout.close() 
    p.wait() 

Но это не сработало - похоже, что этот код просто приостановил мою программу. Я пытался записать вывод в файл и читать файл с локального компьютера, но он искажает мои данные. Что я могу сделать, чтобы читать вывод терминала с сервера в режиме реального времени?

+0

Попробуйте 'now = p.communicate() [0] .splitlines()', а затем 'для строки в настоящее время: .....' – fedepad

+0

Или просто: 'для строки в p.stdout: ...' что может быть лучше. – fedepad

ответ

0

Поскольку выход будет линия буферным, так как вы используете bufsize=1, то вы можете просто сделать:

cmd="sshpass -p 'pass' ssh -Y [email protected] -t 'process_image; bash -l'" 
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1) 
for line in p.stdout: 
    print(line) 
    ..... 

Конечно, это предполагает, что ваша команда дает вам вывод, который вы ожидаете.

+0

Да, это работает, спасибо большое! – Boris

 Смежные вопросы

  • Нет связанных вопросов^_^