首页 > 解决方案 > 搜索文件并仅返回 Python 中的前 x 个结果

问题描述

好的,所以我正在尝试为 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+"```")

我需要更改或添加什么?

标签: python

解决方案


也许添加一个计数器来记录你已经找到了多少,如果你找到了超过 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

推荐阅读