Запустите подпроцесс и распечатайте вывод в журнал.Python

Программы на Python
Ответить
Anonymous
 Запустите подпроцесс и распечатайте вывод в журнал.

Сообщение Anonymous »

Я ищу способ вызова сценариев оболочки из Python и записи их stdout и stderr в файл с использованием ведения журнала. Вот мой код:

Код: Выделить всё

import logging
import tempfile
import shlex
import os

def run_shell_command(command_line):
command_line_args = shlex.split(command_line)

logging.info('Subprocess: \"' + command_line + '\"')

process_succeeded = True
try:
process_output_filename = tempfile.mktemp(suffix = 'subprocess_tmp_file_')
process_output = open(process_output_filename, 'w')

command_line_process = subprocess.Popen(command_line_args,\
stdout = process_output,\
stderr = process_output)
command_line_process.wait()
process_output.close()

process_output = open(process_output_filename, 'r')
log_subprocess_output(process_output)
process_output.close()

os.remove(process_output_filename)
except:
exception = sys.exc_info()[1]
logging.info('Exception occured: ' + str(exception))
process_succeeded = False

if process_succeeded:
logging.info('Subprocess finished')
else:
logging.info('Subprocess failed')

return process_succeeded
И я уверен, что есть способ сделать это без создания временного файла для хранения выходных данных процесса. Есть идеи?


Подробнее здесь: https://stackoverflow.com/questions/219 ... to-logging
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»