Я пишу скрипт на python, который использует subprocess.Popen для выполнения двух программ (из скомпилированного кода C), каждая из которых выдает стандартный вывод. Сценарий получает этот вывод и сохраняет его в файл. Поскольку выходные данные иногда достаточно велики, чтобы перегружать подпроцесс. PIPE, из-за чего скрипт зависает, я посылаю 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
Больше вещей
[... стандартный вывод из обоих исполняемых файлов ...]
Можно ли, например, сбросить стандартный вывод A в журнал после вызова Popen? Еще одна вещь, которая может иметь значение: запускается исполняемый файл A, затем ожидает B, а после того, как B печатает материал и заканчивает, A затем печатает больше материала и заканчивает.
Я использую Python 2.4 на RHE Linux.