将python脚本运行的.bat文件的输出重定向到GUI,并将该脚本转换为EXE

2024-05-23 17:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前编写了一个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)

但是,它不处理我正在使用的.bat文件的输出子流程.Popen. 在


Tags: 文件用户self参数stringdefwxpythongui
2条回答

我使用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()

您可以使用subprocess module调用脚本 在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

相关问题 更多 >