首页 > 解决方案 > 试图从文本文档(python)中获取随机行

问题描述

我是 python 新手,正在使用 Discord.py 开发一个不和谐机器人。我试图做到这一点,所以当你输入 %quote 时,它​​会从文本文件中得到一个随机行。但由于某种原因,它跳过了第一行或两行。也许我弄错了逻辑?这是我的代码。

@commands.command()
    async def quote(self, ctx, Qnum='janfol91213sdf2uieh1あ2Ⅳ3sんksnaaksd'):
            i = 0
            if Qnum == 'janfol91213sdf2uieh1あ2Ⅳ3sんksnaaksd':
                f = open("cogs\Base\data\Quotes.txt")
                random_lines = random.choice(f.readlines())
                await ctx.send(random_lines)
            else:
                f = open("cogs\Base\data\Quotes.txt")
                for line in f:
                    if i == int(Qnum):
                        quote = f.readline()
                        f.close()
                        break
                    else:
                        i = i+1
                await ctx.channel.send(quote)
                f.close()

随机 Qnum 的东西是可选参数或其他东西

标签: pythonfor-loopdiscorddiscord.py

解决方案


假设您的 txt 文件看起来像这样:

quote1
quote2

您可以读取 txt 文件并用 \n 将其拆分,如下所示:

import random
with open('file.txt', 'r') as f:
    read = f.read()
    array = read.split('\n')
    quote = random.choice(array)
await ctx.channel.send(quote)

为了确保它不会跳过任何行,您可以使用 print(array) 将带有引号的数组打印到控制台


推荐阅读