Was ist die Multiplattform-Alternative zu subprocess.getstatusoutput (ältere commands.setstatusoutput () aus Python?

8

Der folgende Code ist in Python 3.0 veraltet, da er durch subprocess.getstatusoutput() ersetzt wurde.

%Vor%

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%     
sorin 16.08.2016, 09:42
quelle

3 Antworten

8

Dies wäre die Multiplattform-Implementierung für getstatusoutput ():

%Vor%     
sorin 29.07.2009, 09:05
quelle
8

Ich würde diese Multiplattform nicht wirklich berücksichtigen, aber Sie können subprocess.Popen :

verwenden %Vor%

Hier ist ein Ersatz für getstatusoutput :

%Vor%

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.

%Vor%     
D.Shawley 31.07.2009 14:25
quelle
1

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.

    
JimG 29.07.2009 00:24
quelle

Tags und Links