0

如何运行两个命令并查看输出。像这样的东西:

process.write('myVar = 2')
process.write('print myVar')

并查看我的每个命令的输出。如果我确实closeWriteChannel看到了输出,我将无法再与我的进程进行通信。这是我的代码:

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()
4

1 回答 1

1

当有一些数据可供读取时,您应该使用readyReadStandardOutputreadyReadStandardError信号来获得通知。QProcess

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

例子:

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()

输出:

标准错误:Python 2.7.4(默认,2013 年 4 月 19 日,18:28:01)
[GCC 4.7.3] 在 linux2 上
标准错误:输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。
标准错误:>>>
标准输出:4
标准错误:>>>
标准输出:2
标准错误:>>>

注意:不能保证带有4和的2行将是两个单独的读取。也可以

标准错误:Python 2.7.4(默认,2013 年 4 月 19 日,18:28:01)
[GCC 4.7.3] 在 linux2 上
标准错误:输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。
标准输出:4
2
标准错误:>>> >>> >>>
于 2013-06-17T23:52:17.203 回答