allow to PIPE some input to command

This commit is contained in:
Olivier Sallou 2013-07-10 16:33:35 +02:00
parent 17876070a5
commit 6c81ee2f8c

View file

@ -1,13 +1,13 @@
def log_check_call(command): def log_check_call(command, input=None):
status, stdout, stderr = log_call(command) status, stdout, stderr = log_call(command, input)
if status != 0: if status != 0:
from subprocess import CalledProcessError from subprocess import CalledProcessError
raise CalledProcessError(status, ' '.join(command), '\n'.join(stderr)) raise CalledProcessError(status, ' '.join(command), '\n'.join(stderr))
def log_call(command): def log_call(command, input=None):
import subprocess import subprocess
import select import select
@ -16,7 +16,15 @@ def log_call(command):
command_log = realpath(command[0]).replace('/', '.') command_log = realpath(command[0]).replace('/', '.')
log = logging.getLogger(__name__ + command_log) log = logging.getLogger(__name__ + command_log)
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) if input is not None:
process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
process.stdin.write(input+"\n")
process.stdin.flush()
process.stdin.close()
# (stdout,stderr) = process.communicate(input+"\n")
# return process.returncode, stdout, stderr
else:
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout = [] stdout = []
stderr = [] stderr = []
while True: while True: