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 に答える