Я пишу python script, который использует subprocess.Popen для выполнения двух программ (из скомпилированного кода C), каждый из которых производит stdout. script получает этот вывод и сохраняет его в файл. Поскольку выход иногда достаточно велик, чтобы перегружать subprocess.PIPE, в результате чего w370 > зависает, я отправляю stdout непосредственно в файл журнала. Я хочу, чтобы мой script записывал что-то в начало и конец файла и между двумя вызовами subprocess.Popen. Однако, когда я смотрю на свой файл журнала, все, что я написал в файл журнала из script, находится вместе в верхней части файла, за которым следует весь исполняемый файл stdout. Как я могу чередовать свой добавленный текст в файл?
def run(cmd, logfile):
p = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=logfile)
return p
def runTest(path, flags, name):
log = open(name, "w")
print >> log, "Calling executable A"
a_ret = run(path + "executable_a_name" + flags, log)
print >> log, "Calling executable B"
b_ret = run(path + "executable_b_name" + flags, log)
print >> log, "More stuff"
log.close()
В файле журнала есть: Вызов исполняемого файла A Вызов исполняемого файла B Больше вещей [... stdout из обоих исполняемых файлов...]
Есть ли способ сбросить Stdout в журнал после вызова Popen, например? Еще одна вещь, которая может быть актуальной: исполняемый файл A начинается тогда, наступает на B, и после того, как B печатает материал и заканчивает его, A затем печатает больше вещей и заканчивает.
Я использую Python 2.4 на RHE Linux.