subprocess.Popen нужна помощь - PullRequest
1 голос
/ 29 октября 2011

Мне нужно выполнить команду, используя subprocess.Popen. Команда, которую мне нужно выполнить:

./Test -t -1

Test - исполняемый файл, в то время как другие аргументы -t и -1 предназначены для включения вывода (журналов) в оболочку. Я хочу записать вывод в файл журнала.

К сожалению, я не могу это сделать.

Я пытался так:

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

Пожалуйста, помогите мне в этом.

С уважением Tamoor

Ответы [ 2 ]

1 голос
/ 30 октября 2011

попробуйте это:

output = open("outputlog.log", "a")
p = subprocess.Popen(["./Test", "-t", "-1"], stdout=subprocess.PIPE)
output.writelines(p.stdout.readlines())
0 голосов
/ 30 октября 2011

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

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

Попробуйте:

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

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

...