大家好我在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中知识较少。搜索了答案,但无法回答。所以请到这里寻求解决方案和指导。 提前致谢
答案 0 :(得分: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的理由,cant python也一样吗?