Python 关闭writechannel后的QProcess输出

Python 关闭writechannel后的QProcess输出,python,qt,pyqt,Python,Qt,Pyqt,如何运行两个命令并查看输出。大概是这样的: process.write('myVar = 2') process.write('print myVar') 并查看我的每个命令的输出。如果我关闭writechannel查看输出,我将无法再与进程通信。这是我的密码: from PyQt4.QtCore import * process = QProcess() process.start('python -i') process.waitForFinished(100) process.read

如何运行两个命令并查看输出。大概是这样的:

process.write('myVar = 2')
process.write('print myVar')
并查看我的每个命令的输出。如果我关闭writechannel查看输出,我将无法再与进程通信。这是我的密码:

from PyQt4.QtCore import *
process = QProcess()
process.start('python -i')

process.waitForFinished(100)
process.readAllStandardOutput()

process.write('2+2')
process.closeWriteChannel()
process.waitForFinished(100)
print process.readAllStandardOutput()

您应该使用
QProcess
readyReadStandardOutput
readyReadStandardError
信号,在有一些数据可读取时获得通知

如果你想发送两行,你只需要用换行符把它们分开

例如:

from PyQt4.QtCore import *

app = QCoreApplication([])
process = QProcess()

def read_out():
    print 'stdout:', str(process.readAllStandardOutput()).strip()


def read_err():
    print 'stderr:', str(process.readAllStandardError()).strip()


process.readyReadStandardOutput.connect(read_out)
process.readyReadStandardError.connect(read_err)

process.start('python -i')
process.write('2+2\n')
process.write('1+1\n')

process.closeWriteChannel()
process.waitForFinished()

app.processEvents()
输出:

stderr: Python 2.7.4 (default, Apr 19 2013, 18:28:01) [GCC 4.7.3] on linux2 stderr: Type "help", "copyright", "credits" or "license" for more information. stderr: >>> stdout: 4 stderr: >>> stdout: 2 stderr: >>>
非常感谢,它很有效。我忘记了命令末尾的“\n”。 stderr: Python 2.7.4 (default, Apr 19 2013, 18:28:01) [GCC 4.7.3] on linux2 stderr: Type "help", "copyright", "credits" or "license" for more information. stdout: 4 2 stderr: >>> >>> >>>