【发布时间】:2021-06-14 01:40:34
【问题描述】:
为我的机器人设置一个命令,该命令从文本文件中随机选择一行并将其分配给一个变量。我在每一行的末尾都有一个数字(我的行在这里.3)。代码应该做的是将行的最后一个字符(现在是分配给变量的字符串)分配给变量。
问题是,它只是不这样做。好吧,它只执行到文本文件的最后一行。 random.choice() 函数得到哪一行并不重要,它总是只在文本文件的最后一行起作用
@commands.command()
async def slap_t(self, ctx, member : discord.Member):
with open('docs/slap_t.txt') as f:
slap_responses = f.readlines()
f.close()
slap= random.choice(slap_responses)
gif_num = slap[-1]
print(f"response: {slap}")
print(f"gif num = {gif_num}")
【问题讨论】:
-
可能是因为其他行末尾包含
\n。请使用slap_responses = f.read().splitlines()而不是slap_responses = f.readlines()重试。 -
@j1-lee
\n是什么意思?你的意思是他们在行尾有\n? -
Yes
readlines()不会从每一行中删除换行符(通常称为\n)。slap[-1]会返回这个换行符,你可能认为这是一个“错误”。 -
@j1-lee 实际上你刚刚解决了这个问题。您能否将其设为答案,以便我将其标记为已回答。
标签: python python-3.x file discord discord.py