使用python open()函数获取错误

使用python open()函数获取错误,python,discord,Python,Discord,我目前正在开发一个discord机器人,我的部分项目涉及从.txt文件中提取数据。它与bot位于同一个工作区,当我从工作区中的其他模块打开它时,它工作正常;但是,当我从bot客户端的.py文件调用它时,我得到以下错误: Ignoring exception in on_message Traceback (most recent call last): File "C:\Users\canon\Anaconda3\envs\tony\lib\site-packages\discord\cli

我目前正在开发一个discord机器人,我的部分项目涉及从.txt文件中提取数据。它与bot位于同一个工作区,当我从工作区中的其他模块打开它时,它工作正常;但是,当我从bot客户端的.py文件调用它时,我得到以下错误:

Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Users\canon\Anaconda3\envs\tony\lib\site-packages\discord\client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "C:/Users/canon/PycharmProjects/discordia/bot.py", line 25, in on_message
    x = dt.retrieve_account(user)
  File "C:\Users\canon\PycharmProjects\discordia\discord_tools.py", line 25, in retrieve_account
    user_file = open(txt_file, "r")
FileNotFoundError: [Errno 2] No such file or directory: 'users.txt'
TLDR;从discord_tools.py调用
open(“users.txt”,“r+”)
可以正常工作,但从bot.py调用它(bot.py反过来又引用discord_tools.py)不起作用

请帮忙


-geisha

open()
的相对路径与流程的工作目录相对

假设:

  • 您确定该文件确实存在(否则,
    r+
    模式无法读取),并且
  • 您(或库)没有使用
    os.chdir()
    来更改工作目录
那你就可以

  • 如果您通过PyCharm(或其他IDE)运行应用程序,您的工作目录设置错误;查看PyCharm/IDE设置,以便在启动配置中正确设置
  • 如果通过命令行运行,请确保运行应用程序时位于users.txt所在的目录中
不过,最好不要使用相对路径;无论您的工作目录如何,都可以轻松计算绝对路径

例如,在
discordia/discord_tools.py

导入操作系统
discordia\u path=os.path.dirname(\u文件\u)
users\u file\u path=os.path.join(discordia\u path,“users.txt”)

您的工作和非工作场景显然有不同的工作目录。一种可能是使用文件的完整路径名,因此代码从何处运行并不重要。请检查工作目录或使用文件的绝对路径