【问题标题】:Python - How can I prevent a file from being opened more than once?Python - 如何防止文件被多次打开?
【发布时间】:2021-01-25 19:04:44
【问题描述】:

我正在使用 discord.py 设计一个 Discord 机器人,并且需要将用户信息存储在文件中。我担心的问题是,如果同时执行两个命令,机器人将尝试同时从两个脚本访问同一个用户的信息文件。有没有一种非常简单的方法可以锁定文件访问?我尝试过使用 Google,但它并没有真正让我得到任何帮助,所以我正在尝试这个。

提前致谢!

【问题讨论】:

  • 您可能需要硬着头皮切换到比文件更合适的数据库。
  • 这能回答你的问题吗? Locking a file in Python

标签: python file discord.py


【解决方案1】:

您描述的是一种叫做race condition的条件,它有很多不同的战斗方式,但我认为最好的方式是使用os.O_NONBLOCK

import os
with open('/path/to/file', 'a', os.O_NONBLOCK) as f:
    f.write('text')
    f.flush()

更多信息请查看this答案

总的来说,我认为最好使用已经内置解决此问题的“真实”数据库(例如 SQLite 或 mongo)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多