вызвать программу и перенаправить ее вывод

246 просмотра
0
0 Комментариев

всем привет, работаю под linux, пишу на Python 2.7. Пишу скрипт в котором иногда требуется вызывать стороннюю прогу ABC, которая в зависимости от дополнительных аргументов (/opt/ABC var1, например) выдает разный результат, есть необходимость перенаправить этот результат в 1.log, как это сделать с помощью python?


Добавить комментарий

3 Answers

Python Опубликовано 12.12.2018
0

Можно использовать модуль subprocess есть примеры в документации

import subprocess
 
subprocess.call(['ls', '-1'], shell=True)

Потом вызвать его:

$ python my_scr.py
 
__init__.py
index.rst
interaction.py

Можете вызвать какой-то скрипт и сохранить результат его работы, записать в файл, вот еще примеры

Добавить комментарий
0

Помимо модуля subprocess также можно воспользоваться модулем os, в частности функцией popen (возвращает вывод), system (возвращает код возврата)

import os
 
log = open('1.log', 'w')
for line in os.popen('/opt/ABC var1'):
    log.write(line)

Добавить комментарий
0

Чтобы эмулировать: /opt/ABC 'var1' &> 1.log bash-команду, не запуская баш в Питоне:

from subprocess import check_call, STDOUT
 
with open('1.log', 'wb', 0) as logfile:
    check_call(['/opt/ABC', 'var1'], stdout=logfile, stderr=STDOUT)

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up