保存/存储数据 discord.py
Saving / storing data discord.py
我正在尝试使用 discord.py 制作游戏。
我需要一种方法来保存数据
所以..当我停止机器人并再次运行时,数据不会消失
这是我当前的代码:
async def token():
global counter
counter = 0
while True:
await asyncio.sleep(5)
counter += 1
@client.event
async def on_message(message):
if message.content.startswith('check'):
await message.channel.send(counter)
client.loop.create_task(token())
这个问题的答案取决于你的 python 程序关闭的方式,如果你关闭它 'the normal way' 一个 try-finally
循环就可以了。像这样:
with open('counter.txt', 'r') as f:
counter = int(f.readline())
try:
client.run(TOKEN)
finally:
with open('counter.txt', 'w') as f:
f.write(counter)
但是,如果您 'kill' finally
部分可能不存在的程序 运行,解决此问题的方法是使用包含 client.close()
另一种方法是修改您的计数器函数,以便它在更改时始终保存当前计数器
async def token():
global counter
counter = 0
while True:
await asyncio.sleep(5)
counter += 1
with open('counter.txt', 'w') as f:
f.write(counter)
另请注意,由于您的程序现在将计数器设置为 0,因此您也需要添加加载值 (this:)
with open('counter.txt', 'r') as f:
counter = int(f.readline())
当然,如果你不只是想保存一个简单的计数器,你将不得不使用json
或pickle
,但方法保持不变
我正在尝试使用 discord.py 制作游戏。 我需要一种方法来保存数据 所以..当我停止机器人并再次运行时,数据不会消失
这是我当前的代码:
async def token():
global counter
counter = 0
while True:
await asyncio.sleep(5)
counter += 1
@client.event
async def on_message(message):
if message.content.startswith('check'):
await message.channel.send(counter)
client.loop.create_task(token())
这个问题的答案取决于你的 python 程序关闭的方式,如果你关闭它 'the normal way' 一个 try-finally
循环就可以了。像这样:
with open('counter.txt', 'r') as f:
counter = int(f.readline())
try:
client.run(TOKEN)
finally:
with open('counter.txt', 'w') as f:
f.write(counter)
但是,如果您 'kill' finally
部分可能不存在的程序 运行,解决此问题的方法是使用包含 client.close()
另一种方法是修改您的计数器函数,以便它在更改时始终保存当前计数器
async def token():
global counter
counter = 0
while True:
await asyncio.sleep(5)
counter += 1
with open('counter.txt', 'w') as f:
f.write(counter)
另请注意,由于您的程序现在将计数器设置为 0,因此您也需要添加加载值 (this:)
with open('counter.txt', 'r') as f:
counter = int(f.readline())
当然,如果你不只是想保存一个简单的计数器,你将不得不使用json
或pickle
,但方法保持不变