2016-10-11 3 views
0

Ich versuche, die Shell-Keyword-Version von ‚Zeit‘ rufen überSubprocess ruft die falsche Version von ‚Zeit‘

subprocess.check_output('time ls',stderr=subprocess.STDOUT,shell=True) 

das mir die Ausgabe wird zu geben (das ist/usr/bin/Zeitausgabe):

0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 1992maxresident)k 
0inputs+0outputs (0major+85minor)pagefaults 0swaps 

anstatt die Shell-Schlüsselwort Ausgabe:

real 0m0.001s 
user 0m0.000s 
sys  0m0.000s 

Aus irgendeinem Grund subprocess.check_output wird das Verzeichnis/usr/bin/Zeit mit Version der Zeit.

Kann mir jemand sagen, was hier passiert? Vielen Dank.

Antwort

2

Es ist, weil time ist auch eine eingebaute Funktion in Bash. So müssen Sie angeben, dass Sie Bash als Shell verwenden möchten:

print subprocess.check_output('time ls', stderr=subprocess.STDOUT,\ 
    shell=True, executable='/bin/bash') 
+0

Danke, ich dies tatsächlich fixiert ‚bash -c‘ zu Beginn meiner Befehle Anhängen durch subprocess zu setzen, aber diese Art und Weise ist besser. – user3078254