ArcGIS Python API用户列表循环更新角色问题求助
解决ArcGIS Python API循环更新用户角色的问题
我来帮你拆解下问题根源,以及给出直接可行的解决方案:
问题出在哪?
你错误地把整个用户列表转成了字符串——当执行User_string = str(Users)后,得到的是类似"['User01','User02','User03']"的字符串。这时候你循环遍历这个字符串,x会被赋值成[、'、U这类单个字符,而不是完整的用户名。这就导致gis.users.get拿到的是无效的“用户名”,自然会报错或者返回None。
而且完全没必要做这个转换!你的原始Users列表里每个元素本身就是字符串,完全符合gis.users.get的username参数要求。
修正后的代码
直接遍历原始的用户列表即可,还可以加上异常处理和存在性判断,避免执行过程中报错中断:
from arcgis.gis import GIS Users = ['User01','User02','User03'] gis = GIS("https://www.arcgis.com","USERNAME","PASSWORD") User_role = 'org_user' for username in Users: try: user = gis.users.get(username=username) if user: user.update_role(role=User_role) print(f"成功更新用户 {username} 的角色为 {User_role}") else: print(f"未找到用户 {username},跳过处理") except Exception as e: print(f"处理用户 {username} 时发生错误: {str(e)}") print("Done! Check Web")
针对Excel生成用户列表的注意事项
如果你的用户列表是从Excel读取的,要确保读取后的每个用户名都是字符串类型(比如有些库会把纯数字用户名识别为整数)。举个用pandas读取的例子:
import pandas as pd # 读取Excel文件 user_df = pd.read_excel("你的用户列表文件.xlsx") # 把用户名列转成字符串后再转成列表 Users = user_df["用户名"].astype(str).tolist()
内容的提问来源于stack exchange,提问作者jaderust
相关产品推荐
相关产品推荐

