【问题标题】:Real-time reading of terminal output from server从服务器实时读取终端输出
【发布时间】:2017-06-14 00:22:17
【问题描述】:

我正在尝试在我的服务器上处理来自我的相机的图像,并在我的本地计算机上实时处理后获取信息。我可以在我的服务器上获取必要的信息作为终端输出,但是在我的服务器程序运行之前,我不能将此信息放在本地机器上的 python 代码中。我试过这段代码:

cmd="sshpass -p 'pass' ssh -Y user@ip -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()

但它不起作用 - 看起来这段代码只是暂停了我的程序。我试图将输出写入文件而不是从本地机器读取文件,但这会扭曲我的数据。如何实时读取服务器的终端输出?

【问题讨论】:

  • 尝试now = p.communicate()[0].splitlines() 然后for line in now: .....
  • 或者只是:for line in p.stdout: ... 这可能会更好。

标签: python ubuntu terminal subprocess


【解决方案1】:

由于您使用bufsize=1,输出将被行缓冲,那么您可以这样做:

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

当然,这假设您的命令正在为您提供您期望的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    相关资源
    最近更新 更多