Search code examples
pythonpyqtpyqt5qbytearray

can't print readAllStandardOutput correctly decoded


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


Solution

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