搜索文件,仅在Python中返回前x个结果

时间:2018-07-11 20:27:51

标签: python

好吧,所以我正在尝试为Discord编写一个机器人,该机器人可以在已定义的文件中搜索已定义的字符串,现在它可以正常工作,但是会返回字符串的每个实例,就像有人在文件中查找一样“ b”会从字面上打印出包含该字母的每一行,直到结尾为止。在僵尸程序的情况下,由于过度使用内存和CPU,会导致拒绝服务。

我想要它做的只是从文件中返回第一个类似10或20个结果,然后停止搜索。它被编码为discord.py

代码如下:

@client.command()
async def search(arg1, arg2):
    await client.say("Searching for "+arg1+" in "+arg2+"...")
    with open("DIRECTORY/"+arg2, 'r') as inF:
        for line in inF:
            if arg1 in line:
                await client.say("```"+line+"```")

我需要更改或添加什么?

1 个答案:

答案 0 :(得分:1)

也许添加一个计数器来跟踪已经找到的数量,如果发现的数量超过20,则停止。例如:

    with open("DIRECTORY/"+arg2, 'r') as inF:
    numFound = 0
    for line in inF:

        if arg1 in line:

            await client.say("```"+line+"```")
            numFound += 1
            if numFound == 20:
                break