подпроцесс.Требуется всплывающая справка

#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:

Две вещи могут пойти не так:

  1. Test -t -1 может быть запись в stderr, а не в стандартный вывод.
  2. output возможно, потребуется очистить или закрыть буфер перед записью на диск.

Попробуйте:

 with open("outputlog.log", "a") as output:
    subprocess.Popen(["./Test", "-t", "-1"], stdout=output, stderr=output)
 

Это приведет к записи как stdout, так и stderr в output , и закроет (и сбросит) output , когда with -suite закончится.