#python #ubuntu #ipc
#python #ubuntu #ipc
Вопрос:
Мне нужно выполнить команду с помощью subprocess.Popen
. Команда, которую мне нужно выполнить, это:
./Test -t -1
Test — это исполняемый файл, в то время как другие аргументы -t
и -1
предназначены для включения выходных данных (журналов) в оболочку. Я хочу записать выходные данные в файл журнала.
К сожалению, я не могу этого сделать.
Я пробовал так:
output = open("outputlog.log", "a")
subprocess.Popen(["./Test", "-t", "-1"], stdout = output)
Пожалуйста, помогите мне в этом отношении.
С уважением, Tamoor
Ответ №1:
попробуйте это:
output = open("outputlog.log", "a")
p = subprocess.Popen(["./Test", "-t", "-1"], stdout=subprocess.PIPE)
output.writelines(p.stdout.readlines())
Ответ №2:
Две вещи могут пойти не так:
Test -t -1
может быть запись в stderr, а не в стандартный вывод.output
возможно, потребуется очистить или закрыть буфер перед записью на диск.
Попробуйте:
with open("outputlog.log", "a") as output:
subprocess.Popen(["./Test", "-t", "-1"], stdout=output, stderr=output)
Это приведет к записи как stdout, так и stderr в output
, и закроет (и сбросит) output
, когда with
-suite закончится.