2016-05-11 7 views
1

Ich möchtesubprocess.check_call mit stdin

subprocess.check_call(cmd) 

mit dem stdin argument verwenden. Die meisten Tutorials, die ich bisher gefunden habe, empfehlen die Verwendung von Popen direkt (z. B. here), aber ich brauche wirklich die Ausnahme, wenn cmd Fehler aus.

Jeder Hinweis auf, wie man

import subprocess 

subprocess.check_call('patch -p1 < test.patch') 

richtig funktioniert?

Antwort

1

Ganz einfach:

subprocess.check_call('patch -p1 < test.patch', shell=True) 
3

Es gibt keine Notwendigkeit besteht, die Shell auszuführen, könnten Sie ein Dateiobjekt als stdin passieren:

with open('test.patch', 'rb', 0) as file: 
    subprocess.check_call(['patch', '-p1'], stdin=file)