Проблема в следующем.
У меня есть python код "test.py", который вызывает командную строку:
os.system('nohup some_command > b.txt &')
print(some_results)
, и он хорошо работает, который перенаправляет вывод информации «some_command» в «b.txt» и вывод только «some_results» на терминал.
Я хочу запускать код в фоновом режиме (пусть он продолжает работать, когда я выхожу из терминала) поэтому я использую эту команду:
nohup python test.py > a.txt &
Теперь все, включая «some_results» и выходные данные «some_command», перенаправляется в «a.txt», что вызывает программа работает неправильно.
Есть ли способ перенаправить только "some_results", а не все, в "a.txt"? Что мне делать?
PS: я не знаю, по каким ключевым словам я должен искать, и с помощью поиска "nohup in nohup" я не нашел соответствующего решения.
===== ======================== Некоторые неудачные попытки ======================= ==
Прочитав рекомендованный вопрос: Перенаправить стандартный вывод в файл в Python?
У меня возникла идея:
import sys
sys.stdout=open('c.txt','w')
os.system('nohup some_command > b.txt &')
print(some_results)
Но проблема все еще не решена.
nohup python test.py > a.txt &
перенаправляет вывод python в «c .txt» (как и ожидалось), а все остальное в «a.txt» вместо «b». txt "и вызывает ошибку.
python test.py > a.txt &
работает временно: он перенаправляет выходные данные python в" c .txt ", команда выводит в" b.txt "и оставляет" a .txt "пусто, как и ожидалось (вроде).
Однако на терминале будут появляться сообщения" nohup: перенаправление stderr на stdout "при каждом вызове команды" os.system ". После перезапуска терминала сообщения больше не появляются, и программа все еще работает, но перенаправление становится таким же, как nohup python test.py > a.txt &
.
============== Некоторые дополнительные информация =====================
os.system(blabla)
выполняется несколько раз.
"some_command" на самом деле " pocketsphinx ", который выводит множество журналов, включая выравнивание по времени фонем, и, наконец, строку, описывающую последовательность фонем без выравнивания по времени. Мне нужен раздел «выравнивание по времени».
В нормальных условиях последняя строка всегда следует за разделом информации, независимо от того, где они напечатаны.
В моей задаче последняя строка всегда в "b.txt" правильно. Информация (включая временные выравнивания, которые я хочу, чтобы они были в "b.txt") перенаправляются куда-то еще.