Python can';t打印ReadAllStandard输出正确解码
我有以下代码,可以将进程的所有输出打印到文本字段中:Python can';t打印ReadAllStandard输出正确解码,python,pyqt,pyqt5,qbytearray,Python,Pyqt,Pyqt5,Qbytearray,我有以下代码,可以将进程的所有输出打印到文本字段中: data = self.m_process.readAllStandardOutput() s = str(data) self.m_ui.b_renderOutput.append(s) 我在输出中得到的是: b'' b'' b'' b'\r\nStarting "C:\\Program Files' b'' b'\\Autodesk\\Maya2018\\bin\\mayabatch.exe"\r\n' b'Initialized VP
data = self.m_process.readAllStandardOutput()
s = str(data)
self.m_ui.b_renderOutput.append(s)
我在输出中得到的是:
b''
b''
b''
b'\r\nStarting "C:\\Program Files'
b''
b'\\Autodesk\\Maya2018\\bin\\mayabatch.exe"\r\n'
b'Initialized VP2.0 renderer {\r\r\n'
我无法用正确的方式解码和打印它。我知道readAllStandardOutput提供的是一个QByteArray如果要转换为字符串,请先使用该方法将其转换为字节,然后再将其转换为字符串:
data=self.m_process.readAllStandardOutput()
s=data.data().decode()#python2还是python3?PyQt5还是PySide2?因为您似乎正在使用Maya,而这会使用python2执行PySide或PySide2,这会影响答案。请尝试将s=str(data)
更改为s=data.decode()
PyQt5和Python3。data.decode()为我提供了错误AttributeError:'QByteArray'对象没有属性'decode',谢谢,这已经成功了,现在我有了一个干净的字符串。最后一件事,你知道我为什么在输出中得到随机换行吗?Like:O\n铅笔计算器正在尝试初始化OpenCL。D\n检测到1个OpenCL平台:@Hyperion不使用append(),因为您插入了一个额外的结束行,而是使用insertPlainText()