我是 Python 的新手,正在尝试运行我从 GitHub 获取的用于 Google Workspace GAM 我正在处理的小项目的脚本。它是用 2.x 编写的,我安装了 3.11。
这是部分代码:
for k, v in row.items():
mg = PERMISSIONS_N_TYPE.match(k)
if mg and v:
permissions_N = mg.group(1)
if v == 'domain':
domain = row['permissions.{0}.domain'.format(permissions_N)]
emailAddress = ''
elif v in ['user', 'group']:
if row.get('permissions.{0}.deleted'.format(permissions_N)) == 'True':
continue
emailAddress = row['permissions.{0}.emailAddress'.format(permissions_N)]
domain = emailAddress[emailAddress.find('@')+1:]
else:
continue
if domain not in DOMAIN_LIST:
outputCSV.writerow({'Owner': row['owners.0.emailAddress'],
'driveFileId': row['id'],
'driveFileTitle': row.get(FILE_NAME, row.get(ALT_FILE_NAME, 'Unknown')),
'permissionId': 'id:{0}'.format(row['permissions.{0}.id'.format(permissions_N)]),
'role': row['permissions.{0}.role'.format(permissions_N)],
'type': v,
'emailAddress': emailAddress,
'domain': domain})
和错误:
File "/Users/tschmitt/GetNonDomainDriveACLs.py", line 65, in <module>
outputCSV.writerow({'Owner': row['owners.0.emailAddress'],
KeyError: 'owners.0.emailAddress'
我想也许
outputCSV.writerow({'Owner': row['owners.0.emailAddress']
需要
outputCSV.writerow({'Owner': row['owners.{0}.emailAddress']
但这并没有改变任何东西。
想法?谢谢你,蒂姆
感谢所有的反馈和建议。
发现输入文件甚至没有那个键。看起来原作者编写的代码是为了使用已更改的旧版 Google GAM 输出格式。
这是我将其更改为的内容,现在效果很好。再次感谢。
outputCSV.writerow({'Owner': row['Owner'],
最好的,蒂姆 | Cargo Cult 程序员