Поиск строки в stdout в python - PullRequest
0 голосов
/ 11 марта 2020

Я написал этот код, который будет получать определенные данные с сервера, используя модуль paramiko. Теперь я изо всех сил пытаюсь выяснить, как найти выход, который имеет значение больше нуля, и распечатать его.

    cmd1 = 'statvv -d 10 -iter 1 ' + (row[2])
    stdin, stdout, stderr = ssh_client.exec_command(cmd1)
    io_check = (stdout.read().decode(encoding='ascii'))
    print(io_check)

Это вывод, который я получаю сверху: -

16:35:04 03/10/2020 r/w I/O per second KBytes per sec    Svt ms IOSz KB

                  VVname      Cur  Avg  Max  Cur  Avg  Max  Cur  Avg Cur Avg Qlen
DW345T77-shared-NC.160   t    9    8    12   37   38   38 0.03 0.03 4.2 4.2    0
--------------------------------------------------------------------------------
                      1   t    9    9        38   38      0.03 0.03 4.2 4.2    0

16:35:10 03/10/2020 r/w I/O per second KBytes per sec    Svt ms IOSz KB

                  VVname      Cur  Avg  Max  Cur  Avg  Max  Cur  Avg Cur Avg Qlen
DCAWERB07-shared-NC.120   t    0    0    0    0    0    0    0    0   0   0   0
--------------------------------------------------------------------------------
                      1   t    0    0         0    0      0.00 0.00 0.0 0.0    0

Там будут сотни выходных, как это. Меня интересует только печать вывода, значение Cur которого больше нуля. Приведенный выше пример представляет собой два вывода из команды, в которой первое значение больше нуля (которое мне нужно распечатать) ... Во втором значение 'Cur' равно нулю, поэтому мне это не нужно.

1 Ответ

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

У меня нет хитрого / простого способа сделать это.

L oop через строки ввода, что делает очевидным:

  1. Если это строка "datatime", решить, следует ли вам распечатывать предыдущий отчет или нет.
  2. Затем запустите новый отчет, используя строку даты и времени в качестве начала следующего отчета
  3. Когда вы собираете данные для текущего отчета, изолируйте строка "cur": если cur! = 0, установить флаг, в противном случае принять false.

Это уродливо, но все, что основано на регулярных выражениях или что-то еще, вероятно, будет больше на agile, чем прямое подходит.

...