簡體   English   中英

Python:啟動終端程序並在運行時解析其輸出

[英]Python: start terminal program and parse its output while it's running

我正在為流行的NodeJS服務器“ MeteorJS”編寫Ubuntu的AppIndicator,該應用程序應列出可用項目並可以啟動服務器,並且在啟動服務器時,它將獲取其Terminal輸出並對它們做出反應。

當您啟動流星時,它會根據發生的情況提供一些輸出。 例如,當您更改代碼時,它會輸出"changed restarting..."或者當您再次更改"changed restarting... (2x)" ,這很好,但是當出現錯誤時,則會打印一些錯誤消息。

除非您的桌面上沒有足夠的空間來查看該終端,否則這很好。

所以我寫了一個應用程序,應該以其他方式通知我這些消息。

我的實際問題:

我需要從python程序啟動服務器,同時我可以對服務器在其標准輸出上確切寫出的輸出做出反應。

所以我想

  • 打開終端程序
  • 將其發送到后台,以便我做我的工作
  • 對打印的每一行做出反應

您可能需要研究下面的函數,然后弄清楚如何使其成為“事件驅動”。

但這是我在后台運行bash腳本並在我感興趣時獲取其輸出的方式。

# To test it out, run the script and then turn your wifi off and on.

import subprocess


def tail():
    command = ["tail", "-f", "/var/log/wifi.log"] # your bash script execute command goes here
    popen = subprocess.Popen(command, stdout=subprocess.PIPE)
    for line in iter(popen.stdout.readline, ""):
        yield line,

logger = tail()

for line in logger:
    print line

您可能想要一個pty。 它可以接收來自應用程序的輸出,您可以從中讀取並根據需要進行處理。

這是一個Python示例。 它只是將所有內容記錄到一個文件中並將其發送到終端。 它基本上類似於script(1),但帶有可選時間戳的輸出文件。 http://stromberg.dnsalias.org/~strombrg/pypty/

HTH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM