脚本在运行时通过IDLE找到需要的文件,但是在运行时通过终端找不到文件

Script finds the necessary file when running through IDLE, but cannot find the file when running through terminal

我有一个 python 脚本,它使用 Selenium 每小时为我的 类 获取我的成绩,如果我的成绩发生变化,会给我发送一封电子邮件。

我有一个外部文件被引用以查看自上次写入以来是否有任何更改。

当我在空闲状态下按 F5 测试程序时,它按预期工作。但是当我去我的终端并输入 python3 /home/pi/Desktop/gradesNotification/script.py 时,它会一直工作,直到它需要打开包含我的成绩的文本文件。我收到错误:

FileNotFoundError: [Errno 2] No such file or directory: 'grades'

文本文件与脚本位于同一文件夹中。该程序在 运行 通过 IDLE 时工作,但在从终端启动时不工作。

我想解决问题的最简单方法是在代码中指定成绩文件的绝对路径:

"/home/pi/Desktop/gradesNotification/grades"

但是,它不会非常漂亮或灵活 - here 是一篇关于使用 pathlib 库从 Python 处理文件系统访问的好文章。

文件名是根据当前工作目录 cwd 给出的。可能您在 IDLE 中的 cwd 是成绩所在的目录,但您的终端 window 在其他地方。尝试切换到正确的目录,或指定 grades 文件的完整路径。

另一种方法是让您的程序检查自己的位置,然后尝试从那里打开 grades