问题
I have this code to print into a text field all the output from a process:
data = self.m_process.readAllStandardOutput()
s = str(data)
self.m_ui.b_renderOutput.append(s)
What I get in the output is this:
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'
I'm not able to decode it and print it in the right way. I know that what comes from readAllStandardOutput is a QByteArray
回答1:
If you want to convert QByteArray to string, first convert it to bytes using the data() method, and then decode() to convert it to string:
data = self.m_process.readAllStandardOutput()
s = data.data().decode() # <---
self.m_ui.b_renderOutput.append(s)
Another method is to convert the QByteArray to bytearray and then use decode():
data = self.m_process.readAllStandardOutput()
s = bytearray(data).decode() # <---
self.m_ui.b_renderOutput.append(s)
来源:https://stackoverflow.com/questions/57035206/cant-print-readallstandardoutput-correctly-decoded