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

基于Python实现YAML凭证OAuth版本更新及表格交互的技术咨询

问题描述

我正在进行一项学术项目,需编写Python脚本完成以下操作:读取credentials.yaml凭证文件,在电子表格的认证列中查找OAuth 1对应值并获取更新后的OAuth 2信息,最终生成包含OAuth 2的新YAML文件。

现有credentials.yaml内容:

name: gcp_credentials_project
info: 1798
project_id: acd-univer-proj-mod-pers
consumer_key: "cfb45ac0098b723f84219e5c12a9532067abf19a7"
oauth_token: "52871f93b604e239a431de879b3c2e45082768f02d"
oauth_version: 1.0
oauth_signature_metho: "HMAC-SHA1"

目标是将oauth_version字段更新为2.0,生成新的YAML文件:

name: gcp_credentials_project
info: 1798
project_id: acd-univer-proj-mod-pers
consumer_key: "cfb45ac0098b723f84219e5c12a9532067abf19a7"
oauth_token: "52871f93b604e239a431de879b3c2e45082768f02d"
oauth_version: 2.0
oauth_signature_metho: "HMAC-SHA1"
实现方案

1. 安装依赖

处理YAML文件需要pyyaml库,若读取Excel格式的电子表格,还需openpyxl:

pip install pyyaml openpyxl

2. 完整脚本实现

脚本包含读取YAML、从电子表格提取OAuth2信息、更新字段、写入新文件四个核心步骤:

import yaml
from openpyxl import load_workbook

def update_oauth_credentials(yaml_input_path, excel_path, yaml_output_path):
    # 读取原YAML凭证文件
    with open(yaml_input_path, 'r', encoding='utf-8') as f:
        creds_data = yaml.safe_load(f)
    
    # 从电子表格提取OAuth2版本信息
    workbook = load_workbook(excel_path, data_only=True)
    worksheet = workbook.active
    
    # 假设表格第1列是认证类型标识(如"OAuth 1"),第2列是对应OAuth2版本值
    target_oauth2_version = None
    for row in worksheet.iter_rows(min_row=2, values_only=True):
        if row[0] == "OAuth 1":
            target_oauth2_version = row[1]
            break
    
    if not target_oauth2_version:
        raise ValueError("电子表格中未找到OAuth 1对应的OAuth 2版本数据")
    
    # 更新oauth_version字段
    creds_data['oauth_version'] = float(target_oauth2_version)
    
    # 写入更新后的YAML文件,保持原字段顺序
    with open(yaml_output_path, 'w', encoding='utf-8') as f:
        yaml.dump(creds_data, f, sort_keys=False, default_flow_style=False, allow_unicode=True)

# 执行脚本
if __name__ == "__main__":
    update_oauth_credentials(
        yaml_input_path="credentials.yaml",
        excel_path="auth_mapping.xlsx",
        yaml_output_path="updated_credentials.yaml"
    )

3. 关键细节说明

  • YAML处理:使用yaml.safe_load()避免不安全的代码执行;写入时sort_keys=False确保字段顺序与原文件一致,default_flow_style=False生成易读的块状格式。
  • 电子表格适配:根据实际表格结构调整列索引和匹配逻辑,比如若认证类型在第3列,将row[0]改为row[2]即可;如果无需从表格获取,直接替换为creds_data['oauth_version'] = 2.0即可简化脚本。
  • 编码兼容:读取和写入文件时指定encoding='utf-8',避免中文或特殊字符出现乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:48:14