Как читать строки в выводе (сгенерированном с помощью команды) после определенной строки? - PullRequest
0 голосов
/ 05 мая 2020

Мне нужно запустить команду UNIX specifici c, используя python, и захватить только строку после строки «Test Failed:». Я использовал следующий подход:

import os
def system_check(command: str):
    stream = os.popen(command)
    output = stream.readlines()
    for line in output:
        if line.strip().startswith('Test Failed: '):
            for line in output:
                print(line)

Это читает каждую строку, начиная с начала, а не только после «Test Failed». Если я использую чтение файлов, как в Как читать только строки в текстовом файле после определенной строки? работает.

1 Ответ

0 голосов
/ 05 мая 2020

Что ж, решение этого вопроса правильное, поскольку пользователю нужны все строки после указанной c строки.

На свой вопрос, однако, вы попробуете это, не используя другой l oop:

for line_nr, line in enumerate(output):
        if line.startswith('Test Failed: '):
            print(output[line_nr+1])

Или:

`for line_nr, line in enumerate(output):
   if 'Test Failed: ' in line:
     print(output[line_nr+1])`

Во втором примечании, почему он печатает все строки (за исключением тех, которые находятся перед 'Test Failed:'), возможно, ему пришлось сделать это с помощью метода strip() и содержимого вывода.

...