python - 搜索文件并仅返回 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+"```")
我需要更改或添加什么?
解决方案
也许添加一个计数器来记录你已经找到了多少,如果你找到了超过 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
推荐阅读
- ada - 如何在 7.4 上为 GNAT 编译 ASIS?
- javascript - JS用字符串和字符串数字排序数组
- reactjs - 无法通过 React 使用 Axios 将文件发布到 Express 端点
- php - PHP 7.2 弃用了每个 foreach 不工作
- java - 如何根据选定的单选按钮显示下拉结果 | JSP
- python - 添加/更改表单中的 ForeignKey 字段 - Django 管理员
- tensorflow - 如何找到特定张量流网络的 output_node_names?
- go - Goroutines:广播器在第一条消息后停止工作
- r - 如何在对 shiny::renderUI 的同一次调用中将一个输入与另一个输入隔离?
- asynchronous - 由 webfontloader 加载的谷歌字体被渲染阻塞