我有一个Python脚本,每小时使用Selenium来获取我的班级成绩,如果我的成绩已更改,我会通过电子邮件向我发送电子邮件。我这样做的方法是使用Selenium Webdriver导航并登录到我的大学成绩门户网站,找到带有HTML ID的文本,然后将其与包含我的成绩字典的外部文件进行比较。
外部文件是必需的,因为我在那里存储了所有年级的字典,例如:{'calculusGrades':'94.75 %', 'discreteGrades':'87.34 %'}
。然后,我的程序打开文本文件,将内容作为字符串,然后使用ast
库将字符串转换为字典。
该脚本运行得很好,我很高兴我能够做到这一点。当我在IDLE中按F5键测试程序时,它按预期运行。但是,当我转到终端并输入:
python3 /home/pi/Desktop/gradesNotification/script.py
它一直运行到需要打开我的成绩的文本文件。我收到错误:
FileNotFoundError: [Errno 2] No such file or directory: 'grades'
该文本文件与脚本位于同一文件夹中,我完全不知道为什么它可以在IDLE中工作,但不能在终端上工作。
我正在使用python 3在Raspberry Pi 4上。
我想最容易解决您的问题的方法是在代码中指定成绩文件的绝对路径:
"/home/pi/Desktop/gradesNotification/grades"
但是,它不是非常美观或灵活-here是一篇很棒的文章,涉及使用pathlib库处理来自Python的文件系统访问。
相对于当前工作目录cwd
给出文件名。您在IDLE中的cwd可能是成绩所在的目录,但是终端窗口在其他位置。尝试更改到正确的目录,或指定grades
文件的完整路径。
另一种方法是让程序检查自己的位置,然后尝试从此处打开grades
。