credentials.json与Python文件同目录仍提示找不到该文件如何解决
FileNotFoundError找不到credentials.json文件解决方案
问题根因
使用相对路径读取文件时,Python会基于当前运行脚本的工作目录查找文件,而非脚本文件自身存放的目录。哪怕credentials.json和脚本放在同一个文件夹,只要运行脚本时的工作目录不是该文件夹,就会触发文件不存在报错。
解决方案
- 方案1:使用绝对路径定位文件(最稳妥,不会受运行目录影响)
先获取当前脚本的所在绝对目录,再拼接credentials.json的路径,替换原有代码的文件名参数即可,修改后参考代码如下:
import os import datetime,gspread,random from oauth2client.service_account import ServiceAccountCredentials import emailing as em scope = ["https://spreadsheets.google.com/feeds",'https://www.googleapis.com/auth/spreadsheets',"https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive"] # 获取当前脚本所在的绝对目录 current_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接得到credentials.json的完整绝对路径 cred_path = os.path.join(current_dir, 'credentials.json') creds = ServiceAccountCredentials.from_json_keyfile_name(cred_path, scope) client = gspread.authorize(creds) sheet = client.open("finalface").sheet1
- 方案2:调整运行脚本的工作目录
先在代码开头添加以下代码打印当前工作目录,确认路径是否和存放credentials.json的文件夹一致:
import os print(os.getcwd())
如果输出路径不匹配,终端cd到credentials.json所在的文件夹后,再运行Python脚本即可。
- 方案3:排查文件名/扩展名错误
Windows系统默认隐藏已知文件扩展名,可能你的文件实际名为credentials.json.txt,仅因为系统隐藏了.txt后缀导致你误认为文件名是credentials.json。打开系统的「显示文件扩展名」设置,确认文件名完全匹配即可。
内容的提问来源于stack exchange,提问作者Emani Nandhitha
相关产品推荐
相关产品推荐

