You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python脚本中直接使用内嵌JSON数据替代外部文件

核心错误点

你的代码存在三个问题,直接导致运行报错:

  • 语法错误:用普通双引号包裹多行JSON内容时,内部的双引号没有做转义处理,Python解释器会直接抛出语法错误,代码无法正常执行
  • 方法误用:json.dumps()的作用是将Python原生字典/列表对象序列化为JSON格式字符串,你需要的是将JSON格式内容转换为Python可识别的字典结构,方法使用逻辑完全相反
  • 接口不匹配:ServiceAccountCredentials.from_json_keyfile_name()设计上仅接收本地JSON文件的路径作为入参,直接传入内存中的JSON字符串或字典对象,会触发文件不存在、参数格式不匹配类报错
正确实现方式

最简洁的实现是直接将凭证内容定义为Python原生字典,调用专门接收字典参数的接口,不需要经过JSON模块的序列化/反序列化流程,代码如下:

from oauth2client.service_account import ServiceAccountCredentials

# 凭证内容直接以Python字典形式内嵌在脚本中,无需依赖外部文件
cred_config = {
  "type": "service_account",
  "project_id": "minipool",
  "private_key_id": "69fca468aede4ee9a884a7bfe9410badc4a6624a",
  "private_key": "-----BEGIN PRIVATE KEY-----\nSbAlvZ+OeIuaAKr3/wlFNg==\n-----END PRIVATE KEY-----\n",
  "client_email": "minipoolserver@minipool.iam.gserviceaccount.com",
  "client_id": "109697528046689636846",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/minipoolserver%40minipool.iam.gserviceaccount.com"
}

# 调用字典入参专用的方法生成凭证
creds = ServiceAccountCredentials.from_json_keyfile_dict(cred_config, scope)

如果你需要先以字符串形式存储JSON内容(比如内容是动态传入的场景),注意用三引号包裹多行字符串避免转义问题,再用json.loads()将字符串转为字典传入即可:

import json
from oauth2client.service_account import ServiceAccountCredentials

# 三引号包裹多行字符串,内部双引号不需要额外转义
json_content = '''
{
  "type": "service_account",
  "project_id": "minipool",
  "private_key_id": "69fca468aede4ee9a884a7bfe9410badc4a6624a",
  "private_key": "-----BEGIN PRIVATE KEY-----\nSbAlvZ+OeIuaAKr3/wlFNg==\n-----END PRIVATE KEY-----\n",
  "client_email": "minipoolserver@minipool.iam.gserviceaccount.com",
  "client_id": "109697528046689636846",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/minipoolserver%40minipool.iam.gserviceaccount.com"
}
'''

# 将JSON字符串解析为Python字典
cred_dict = json.loads(json_content)
creds = ServiceAccountCredentials.from_json_keyfile_dict(cred_dict, scope)

提示:私钥类敏感信息直接硬编码在脚本中存在泄露风险,生产环境建议配合环境变量、专用密钥管理服务存储,不要明文写在代码文件中。

内容的提问来源于stack exchange,提问作者nak coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 08:45:18