Google Drive API“md5Checksum”无法在Python上运行

时间:2016-04-14 11:47:12

标签: python python-3.x google-drive-api

我正在编写一个脚本来查找重复的文件,我正在尝试使用'md5Checksum'但我报告了一个KeyError。你知道它是否真的有效吗?

感谢您的时间。

FILES = SERVICE.children().list(folderId='root',
                                q="mimeType='application/vnd.google-apps.document'"
                               ).execute().get('items', [])
for item in FILES:
    fi = SERVICE.files().get(fileId=item['id']).execute()
    if fi['title'] == "Test":
        print('The name is: %s and md5 is: %s' % (fi['title'], fi['md5Checksum']))

这是错误:

Traceback (most recent call last):
  File "driveBlueberry_v2\check_md5.py", line 20, in <module>
    print('The name is: %s and md5 is: %s' % (fi['title'], fi['md5Checksum']))
KeyError: 'md5Checksum'

1 个答案:

答案 0 :(得分:0)

来自Google Drives API V3

  

md5Checksum - string - 修订版内容的MD5校验和。这仅适用于Drive中具有二进制内容的文件。

因此,如果您的文档不包含二进制数据,则元数据中不会有md5Checksum字段。 Google Drives API V2明确表示没有填充Google文档:

  

md5Checksum - string - 此文件内容的MD5校验和。此字段仅填充内容存储在云端硬盘中的文件;它没有填充Google文档或快捷方式文件。

为什么他们在V3 API中删除了对Google文档的引用并不明显。无论哪种方式,很明显不会为每个文件填充md5Checksum字段,因此您应该使用以下内容:

if fi['title'] == "Test":
    print('The name is: %s and md5 is: %s' % (fi['title'], fi.get('md5Checksum'))

如果没有填充字段,这可以避免抛出异常并按预期返回None