Der folgende Code ist in Python 3.0 veraltet, da er durch subprocess.getstatusoutput()
ersetzt wurde.
Die wirkliche Frage ist, was die Multiplattform-Alternative zu diesem Befehl von Python ist, weil der obige Code unter Windows nicht hässlich ist, weil getstatusoutput nur unter Unix unterstützt wird und Python das nicht sagt, stattdessen erhalten Sie etwas wie:
%Vor% Ich würde diese Multiplattform nicht wirklich berücksichtigen, aber Sie können subprocess.Popen
:
Hier ist ein Ersatz für getstatusoutput
:
Dieser Ausschnitt wurde vom ursprünglichen Poster vorgeschlagen. Ich habe einige Änderungen vorgenommen, seit getstatusoutput
dupliziert stderr
auf stdout
.
Das Problem ist, dass dir
nicht wirklich ein Multiplattform-Aufruf ist, sondern subprocess.Popen
< Mit / a> können Sie Shell-Befehle auf jeder Plattform ausführen. Ich würde keine Shell-Befehle verwenden, es sei denn, Sie müssen es unbedingt tun. Untersuchen Sie den Inhalt der os
, os.path
und shutil
Pakete statt.
getstatusoutput docs sagen, dass es den Befehl wie folgt ausführt:
{cmd} 2 & gt; & amp; 1
Was offensichtlich nicht mit cmd.exe funktioniert (das 2 & gt; & amp; 1 funktioniert gut, wenn Sie es brauchen).
Sie können Popen wie oben verwenden, aber auch den Parameter 'stderr = subprocess.STDOUT' verwenden, um das gleiche Verhalten wie getstatusoutput zu erhalten.
Bei meinen Tests unter Windows wurde der Returncode auf "None" gesetzt, was nicht ideal ist, wenn Sie auf den Rückgabewert zählen.