0

大家好,我在linux环境中使用python 2.7和GUI wxpython。我想将终端的输出重定向到消息框,它将如何发生?我的代码是:

 p = subprocess.call(" grep "Wanted" .filename | awk '{print $2}' | cut -c11-20", shell=True)

这将在终端中提供正确的输出,但是当我在消息框中调用它时,它显示“0”。

 wx.MessageBox(" file name:'%s' % (str(p)), "info")

如何打印终端中显示的内容,我是 python 世界的新手,对 python 的了解较少。搜索答案,但找不到任何答案。所以在这里寻求解决方案和指导。提前致谢

4

1 回答 1

0

使用 Popen 可能更喜欢/更简单(但我很少使用 subprocess.call 所以我不知道)。但是据我所见,您的示例应该可以正常工作(使用 Ashwini Chaudhary 提到的修复程序)。

import subprocess
import wx

def main():
    p = subprocess.Popen(['ls', '-a'], stdout = subprocess.PIPE)
    text = p.stdout.readlines()
    text = "".join(text)

    wx.MessageBox("file names:\n%s" % text, "info")

if __name__ == '__main__':
    app = wx.PySimpleApp()
    main()

无论如何:有任何理由涉及 Bash,python 不能这样做吗?

于 2013-05-11T07:00:09.273 回答