Ich verwende diesen Code, um die Standardausgabe von einem externen Programm abzurufen:
>>> from subprocess import *
>>> command_stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0]
Die Methode communicate() gibt ein Array von Bytes zurück:
>>> command_stdout
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n'
Ich würde jedoch gerne mit der Ausgabe als normale Python-Zeichenkette arbeiten. So dass ich sie wie folgt ausgeben könnte:
>>> print(command_stdout)
-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1
-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2
Ich dachte, das sei das Ziel der binascii.b2a_qp() Methode ist, aber als ich es versuchte, erhielt ich wieder das gleiche Byte-Array:
>>> binascii.b2a_qp(command_stdout)
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n'
Wie konvertiere ich den Byte-Wert zurück in einen String? Ich meine, unter Verwendung der "Batterien", anstatt es manuell zu tun. Und ich möchte es mit Python 3 OK sein.