У меня есть этот методпитон 2 подпроцесс не check_output возвращения выход ошибки
def do_sh_shell_command(string_command, env_variables=None):
cmd = shlex.split(string_command)
try:
p = subprocess.check_output(string_command, shell=True,
env=env_variables) # shell=True means sh shell used
except subprocess.CalledProcessError as e:
print 'Error running command: ' + '"' + e.cmd + '"' + ' see above shell error'
print 'Return code: ' + str(e.returncode)
return e.returncode, e.cmd
return 0, p
, которые работают, но по какой-то причине не возвращает вывод ошибок из specfici команды
def hold_ajf_job(job_order_id):
#print 'ctmpsm -UPDATEAJF ' + job_order_id + ' HOLD'
return do_sh_shell_command('ctmpsm -UPDATEAJF ' + job_order_id + ' HOLD')
hold_ajf_job('0e4ba')
do_sh_shell_command('lsl')
выход:
ctmpsm -UPDATEAJF 0e4ba HOLD
Error running command: "ctmpsm -UPDATEAJF 0e4ba HOLD" see above shell error
Return code: 1
/bin/sh: lsl: not found
Error running command: "lsl" see above shell error
Return code: 127
Когда я запускаю команду ctmpsm -UPDATEAJF 0e4ba HOLD, просто создайте обычную оболочку, я получаю belo ш выход ошибки
ctmtest1-tctmsv80 [288] ctmpsm -UPDATEAJF 0e4ba HOLD
Failed to Hold Orderno 0000e4ba. (rc=JOBSTATINCM).
Это отличается от не-полезный вывод ошибок в моем питона коде, и я не могу за жизнь мне понять, почему?
UPDATE:
Попытка STDERR = subprocess.STDOUT
def do_sh_shell_command(string_command, env_variables=None):
cmd = shlex.split(string_command)
try:
p = subprocess.check_output(string_command, stderr=subprocess.STDOUT, shell=True,
env=env_variables) # shell=True means sh shell used
except subprocess.CalledProcessError as e:
print 'Error running command: ' + '"' + e.cmd + '"' + ' see above shell error'
print 'Return code: ' + str(e.returncode)
return e.returncode, e.cmd
return 0, p
выход:
Error running command: "ctmpsm -UPDATEAJF 0e4ba HOLD" see above shell error
Return code: 1
Error running command: "lsl" see above shell error
Return code: 127
Теперь ошибки полностью исчезли?
Несвязанный: 'cmd' не используется в вашем коде. – jfs