如何读取输出(使用命令生成)中某一字符串后的行?

问题描述 投票:0回答:1

我必须使用python运行UNIX特定的命令,并且只捕获 "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)

这将从头开始读取每一行,而不是只读取 "测试失败 "之后的行。如果我使用读取文件的方法,如 如何只读取文本文件中某一字符串后的行?它的工作原理。

python-3.x popen
1个回答
0
投票

好吧,这个问题的解决方法是正确的,因为用户想要的是特定字符串之后的所有行。

然而,对于你的问题,你可以尝试这样做,而不使用另一个循环。

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

Or:

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

第二个问题, 为什么它要打印所有的行 (在 "测试失败 "之前的行), 也许它可能要用以下方法来解决 strip() 方法和输出的内容。

© www.soinside.com 2019 - 2024. All rights reserved.