如何将终端输出到python变量 - 用于规范快速应用程序



我正在 ubuntu 12.10 上快速创建一个 Ubuntu 应用程序。它是一个简单的GUI,用于启动,停止和重新启动Apache2 Web服务器。

让我首先给出我遇到问题的部分代码 -

    # handler for restart apache button    
    def on_button_restart_clicked(self, button):
        self.label = self.builder.get_object("labelStatus")
        self.label.set_text("Restarting web server apache2")
        os.system("gksudo /etc/init.d/apache2 restart")
        self.label.set_text("Web server apache2 Restarted")

单击按钮后,将调用该方法,但不显示标签 - 重新启动 Web 服务器 apache2在终端中,此时的输出是 - * 重新启动 Web 服务器 apache2 [ OK ] ...等待,一旦 apache 被重新凝视,就会显示下一行,即 - Web 服务器 apache2 已重新启动

我该如何解决问题 -

  1. 我不想在标签文本中对消息进行硬编码。那么我怎样才能跟踪终端输出并将其捕获到 python 变量,以便我可以设置标签文本。
  2. 由于我正在使用gksudo,弹出窗口将输入密码,但问题是它显示了命令。如何在 python 中优雅地使用 sudo?

我对python完全陌生。提前致谢

快速检查堆栈将我带到了此链接; 希望有帮助

管道子处理标准输出到变量

我也挖了这个:

from StringIO import StringIO 
import sys
# store a reference to the old
old_stdout = sys.stdout
# var to store everything that is sent to the std out
result = StringIO()
sys.stdout = result
# your function here; all results should be stored
user_def_function()
# reset the std out
sys.stdout = old_stdout
# result to string
result_string = result.getvalue()

相关内容

  • 没有找到相关文章

最新更新