使用pythonapi上传二进制文件Google Drive仍然没有显示md5Checksum metad

2024-04-24 10:14:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要检查一个文件,我已经上传到我的谷歌驱动器帐户需要与我的本地硬盘上的原始文件更新。为此,我想使用一些散列,比如md5sum。因此,存储在驱动器上的文件上的md5Checksum元数据似乎是最合适的(尽管如此,我还是会寻找修改时间戳,但考虑到处理日期/时间转换的负担,这就不那么吸引人了)。因此,使用下面的代码,使用已知的文件ID:

fileId = 'whatever'  # gotten from a previous upload using MediaFileUpload():
fi = drive_service.files().get(fileId=fileId).execute()
import pprint
pprint.pprint(fi)
md5Checksum = fi.get('md5Checksum')
print("\n{}\nmd5Checksum\n{}".format('-' * 80, md5Checksum))

它返回:

{u'id': u'whatever',
 u'kind': u'drive#file',
 u'mimeType': u'application/octet-stream',
 u'name': u'the_name_of_that_file_I_uploaded'}

--------------------------------------------------------------------------------
md5Checksum
None

https://stackoverflow.com/a/36623919/257924所示,md5Checksum值将仅对二进制文件可用。但是既然上面显示的mimeTypeapplication/octet-stream,那么它不应该是可用的吗?是不是application/octet-stream相当于一个“二进制”文件上传?你知道吗

我不能做的只是简单地下载文件并运行md5sumLinux实用程序(或等效的Python代码来执行相同的操作)来检查它是否不同,因为这样就破坏了检查文件是否真的需要更新(删除并重新上载,或上载新版本等)的整个要点。你知道吗

更新#1:这与Google Drive API 'md5Checksum' does not work on Python不同,因为我没有使用列表api来获取文件id。我只是使用以前上传的id来检索该文件上的元数据,我希望看到某种类型的哈希值来指示其内容,特别是在我认为被视为“二进制”的文件上。你知道吗


Tags: 文件数据代码idstreamapplication时间二进制