Python 2 -> 3 个问题:KeyError [关闭]

问题描述 投票:0回答:1

我是 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']
但这并没有改变任何东西。

想法?谢谢你,蒂姆

python python-3.x csv google-drive-api keyerror
1个回答
0
投票

感谢所有的反馈和建议。

发现输入文件甚至没有那个键。看起来原作者编写的代码是为了使用已更改的旧版 Google GAM 输出格式。

这是我将其更改为的内容,现在效果很好。再次感谢。

outputCSV.writerow({'Owner': row['Owner'],

最好的,蒂姆 | Cargo Cult 程序员

© www.soinside.com 2019 - 2024. All rights reserved.