是否可以将 mmap 文件视为字节对象?

Is it possible to treat an mmap file as a bytes object?

考虑以下代码,其中 big_file 不适合内存的文件路径

f = os.open(big_file, os.O_RDONLY)
data = mmap.mmap(f, 0, access=mmap.ACCESS_READ)

在这一点上,data 表现得像一个带有切片符号或普通文件操作的字符串。但是,我正在针对 API 进行编程,它期望传入 bytes 类型的对象,如果我尝试传递变量 data.[=21= ,则会出现以下错误]

TypeError: expected request_binary as binary type, got <class 'mmap.mmap'>

对于小文件,我不能简单地传入data.read()甚至完全跳过mmap,但是对于大文件,这将导致MemoryError

有没有办法包装或转换 mmap 对象,以便它可以被 API 用作 bytes

docstring for the API you're using 在最上面说:

Do not use this to upload a file larger than 150 MB. Instead, create an upload session with files_upload_session_start.

假设您的计算机有超过 150 MB 的空闲内存,mmap 不会在这里帮助您。您需要使用他们推荐的 API(它支持分块上传,一次发送一件)。