sys.stdout.write не grep - PullRequest
       4

sys.stdout.write не grep

0 голосов
/ 11 марта 2019

У меня есть сценарий Python, который записывает на экран в качестве сценария запуска.Я хочу следить за ходом работы сервера, поэтому я зацикливаюсь на проверке состояния.Я не хочу записывать экран.Поэтому я использую sys.stdout.write.Проблема в том, что программа, которую я использую (wlst Weblogic), печатает всю эту запись, которую я не хочу отображать.Я могу обойти это, используя grep и печатая только строки, начинающиеся с пробела.

У меня есть эта функция

def printRoll():
   print ' Is my Print working'
   myTest = ' Hello'
   myTest1 = 'test 123'
   sys.stdout.write("\r %s " % myTest)
   sys.stdout.flush()
   systime.sleep(10)
   sys.stdout.write("\r  %s " % myTest1)
   sys.stdout.flush()
   systime.sleep(10)

То, что я хочу отобразить:

 Is my Print working
 Hello

, затем через 10 секунд Hello перезаписывается с

 test 123

, если я запускаю команду grep

python 'printRoll()' | grep '^[[:space:]]\{1\}[A-Za-z0-9]' --line-buffered 

, она печатает только первую строку

Is my Print working

Он не будет печатать какие-либо строки sys.stdout.write.Я думаю, что это проблема с буферизацией, но я не могу найти пример для моей проблемы.

Сценарий python работает, как и ожидалось, но также содержит много другой информации, которую я не хочу выводить на экран.

Любая помощь приветствуется.

Я считаю, что это старая версия Python, то есть 2.7

ура Джеймс

1 Ответ

1 голос
/ 11 марта 2019

Дело в том, что остальные строки не являются новыми строк в отношении grep, поскольку вы не выводите символ \n новой строки.

Что видит grepis - это вывод через xxd для шестнадцатеричного дампа, так что мы можем видеть все символы - следующее.0a (во второй строке дампа) - символ новой строки.Вы можете видеть, что после этого больше нет символов новой строки (0a s), так что grep больше ничего не может разделить ввод на строки.

00000000: 2049 7320 6d79 2050 7269 6e74 2077 6f72   Is my Print wor
00000010: 6b69 6e67 0a0d 2020 4865 6c6c 6f20 0d20  king..  Hello . 
00000020: 2074 6573 7420 3132 3320                  test 123 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...