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

Python操作GKE集群报错NameError:name 'name'未定义求解决

问题排查与解决方案

错误原因

你遇到的NameError: name 'name' is not defined是因为代码里的cluster[name]把name当成了变量,但你并没有定义过这个变量。而实际上,字典的键是字符串类型,你需要用引号把键名包裹起来,也就是用cluster['name']来访问集群名称。

修正后的代码

另外还有个小问题:你在for cluster in response['clusters']循环内每次都初始化li = [],这样每次循环都会创建新列表,只能保存当前单个集群的名字。应该把列表初始化放到循环外面,才能收集所有集群名称。同时读取文件时,每行末尾可能带有换行符,建议用strip()处理掉,避免传递给gcloud命令时出错。

修正后的代码如下:

with open("abc.txt", "r") as f:
    for x in f:
        # 去掉换行符和空白字符
        project_id = x.strip()
        subprocess.run(["gcloud", "config" ,"set" ,"project", project_id ])
        request = service.projects().zones().clusters().list(projectId=project_id, zone='-')
        response = request.execute()
        if 'clusters' in response:
            # 把列表初始化放到集群循环外面
            li = []
            for cluster in response['clusters']:
                # 使用字符串键'name'访问字典值
                li.append(cluster['name'])
            print(li)

额外说明

从你打印的cluster字典结构可以看到,'name'是字符串类型的键,所以必须用引号包裹才能正确访问对应的值。如果不加引号,Python会认为你在引用一个名为name的变量,而这个变量并没有被定义,因此抛出NameError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 15:01:04