Ich habe ein Python-Skript, das subprocess.Popen verwendet, um Windows * .exe-Dateien auszuführen. Alle EXEs außer einem erzeugen die erwartete Ausgabe. Wenn mit print () gedruckt wird, enthält die Ausgabe Leerzeichen zwischen jedem Zeichen der Ausgabe.
So sieht die Ausgabe beim Ausführen der EXE in der Windows-Befehlszeile aus:
%Vor%So sieht es aus, wenn es in Python gedruckt wird:
%Vor%Wir können den Whitespace deutlich sehen. Interessant ist, dass die ersten Zeilen die Leerzeichen nicht enthalten.
Dies ist der Code:
%Vor%Woher kommen die Räume und wie entferne ich sie?
Windows-Ausgabeformat ist in UTF-16 codiert.
Sie müssen die Ausgabe dekodieren, um die Codierung mithilfe der Methode str.decode zu korrigieren. Anführungszeichen:
%Vor%
str.decode([encoding[, errors]])
Dekodiert die Zeichenfolge mit dem für die Codierung registrierten Codec. Codierung Standardmäßig wird die Standardzeichenfolgencodierung verwendet. Fehler können gegeben werden, um a zu setzen anderes Fehlerbehandlungsschema Der Standardwert ist 'strict', was bedeutet Codierungsfehler verursachen UnicodeError. Andere mögliche Werte sind 'Ignorieren', 'Ersetzen' und einen anderen Namen, der über registriert wurde codecs.register_error (), siehe Abschnitt Codec-Basisklassen.
Eine Tabelle mit Standardcodierungen finden Sie unter 7.8.3. Standard-Kodierungen .
Da Ihre Ausgabe gemischte Codierungen enthält [als "Leerzeichen" (die wirklich 0x00
Zeichen sind, nicht 0x20
) existiert nur in Teilen der Ausgabe], möchten Sie vielleicht Ihre Zeichenfolge vorverarbeiten oder partitionieren, bevor Sie die Decodierung durchführen .
Tags und Links python windows subprocess