我目前编写了一个使用wxPython创建GUI的Python文件,允许用户输入一些字段,然后在其他位置运行.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文件的输出。
答案 0 :(得分: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()
答案 1 :(得分:0)
您可以使用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