import subprocess
subprocess.call('gcc a.c', shell=True)
subprocess.call('./a.out', shell=True)
我正在执行此语句来编译" .c"文件。我在后端得到了输出。
但是如何在python文本区域中获取该C程序的输出(我使用tkinter,python 2.7)?
另一个问题是,我无法扫描输入数据,但只能编译不会输入数据的程序。
答案 0 :(得分:1)
您可以使用subprocess.Popen并将stdout重定向到PIPE并测试只需读取stdout例如complie.stdout.readlines()
即可设置文本区域调用
import subprocess
complie = subprocess.Popen('gcc a.c', stdout=subprocess.PIPE,shell=True)
runprog = subprocess.Popen('./a.out', stdout=subprocess.PIPE,shell=True)
print (complie.stdout.readlines())
print (runprog.stdout.readlines())
而不是打印,您可以将complie.stdout.readlines()
放入文本区域设置调用
示例代码:
import subprocess
from tkinter import *
#Example on Windows
root = Tk()
T = Text(root, height=2, width=200)
T.pack()
complie = subprocess.Popen('ping google.com', stdout=subprocess.PIPE,stdin=subprocess.PIPE ,shell=True)
complie.wait()
outcome = complie.stdout.readlines()
print(outcome)
T.insert(END, outcome)
mainloop()
希望这有帮助