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