是否可以将 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(它支持分块上传,一次发送一件)。
考虑以下代码,其中 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(它支持分块上传,一次发送一件)。