如何解决使用 f.readline() 读取特定行 - Discord.py
async def token():
global counterA
global counterB
counterA = 0
counterB = 0
while True:
await asyncio.sleep(5)
counterA += 1
counterB += 2
with open('counter.txt','w') as f:
f.write (str(counterA))
f.write ("\n")
f.write (str(counterB))
f.write ("\n")
@client.event
async def on_ready():
global counterA
global counterB
with open('counter.txt','r') as f:
counterA = int(f.readline())
with open('counter.txt','r') as f:
counterB = int(f.readline())
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
client.loop.create_task(token())
client.run(TOKEN)
当我打开机器人时,我试图读取第二行(counterB),因此计数器不会重新启动
当我运行机器人时,我没有得到第二行(counterB)的值,而是得到了第一行的值(counterA)
所以,我试图从 counter.txt 中获取特定/特定行
解决方法
readline()
逐行读取文件。
如果您需要文件中的随机行信息,您可以使用 readlines()
方法将行作为列表返回,然后您可以使用基于索引的访问直接获取特定行信息。>
例如,要获取 second
行值,请使用以下命令:
with open('counter.txt','r') as f:
lines = f.readlines()
secondLine = lines[1]
,
f.readlines()
返回一个行列表,例如我的 txt 文件如下所示:
Hello world!
This is something
I'm writing
f.readlines
的返回结果为:
result = ["Hello World!\n","This is something\n","I'm writing\n"]
假设我想要第二行:
>>> line = 2
>>> result[line - 1] # Remember,indexes start at 0
"This is something\n"
,
如果你只想要一行,那么不要读所有行,读到第 N 行,
s=''
for i in range(n) :
s=f.readline()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。