0

我目前编写了一个 Python 文件,它使用 wxPython 创建一个 GUI,允许用户输入一些字段,然后在其他位置运行一个 .bat 文件,发送这些参数。.bat 文件在命令提示符上打印大量输出,我想将其重定向到我的 GUI 中的文本框,或者让我的 GUI 弹出一个新的命令提示符来运行 .bat 文件。我写这篇文章的目的是让它成为一个独立的 .exe 文件,那么哪个选项更好,我该如何实现它?

编辑:我能够通过专门为它创建一个新类来重定向 Python 文件本身的输出:

class RedirectText(object):
    def __init__(self,aWxTextCtrl):
        self.out=aWxTextCtrl
    def write(self,string):
        self.out.WriteText(string)

但是,它不处理我正在使用 subprocess.Popen 运行的 .bat 文件的输出。

4

2 回答 2

1

我使用 subprocess 和 wx 编写了一些东西,在其中运行 ping、traceroute 和其他一些东西,并将它们的输出重定向到我的文本控件。这有点棘手,但还不错。我在我的博客上写了一篇关于它的教程:

我使用的重定向功能很像您自己的,然后在设置重定向后,我执行以下操作:

#----------------------------------------------------------------------   
def pingIP(self, ip):
    proc = subprocess.Popen("ping %s" % ip, shell=True, 
                            stdout=subprocess.PIPE) 
    print
    while True:
        line = proc.stdout.readline()                        
        wx.Yield()
        if line.strip() == "":
            pass
        else:
            print line.strip()
        if not line: break
    proc.wait()
于 2013-06-17T18:27:32.970 回答
0

您可以使用subprocess 模块来调用您的脚本示例在 Linux 上调用“ls”命令:

>>> from subprocess import call
>>> call(['ls', '-l'])
total 0
-rw-rw-r-- 1 user group 0 Jun 17 18:37 file1
-rw-rw-r-- 1 user group 0 Jun 17 18:37 file2
-rw-rw-r-- 1 user group 0 Jun 17 18:37 file3
0
于 2013-06-17T17:39:43.313 回答