3770 Stimmen

Bytes in eine Zeichenkette umwandeln

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X