文件缓冲和随机访问#
大多数实现都创建了从 fsspec.spec.AbstractBufferedFile
派生的文件对象,并且具有许多共同的行为。AbstractBufferedFile
的子类为底层类似文件的数据提供了随机访问(无需下载整个文件)。这是大数据访问模型中的关键特性,其中操作的每个子任务可能只需要文件的一小部分,因此不希望被迫下载整个文件。
这些文件提供了读写操作的缓冲,以限制与远程资源的通信。缓冲区的大小通常在打开时通过 blocksize=
参数进行配置,尽管实现可能需要遵守一些最小或最大尺寸。
对于读取,有多种缓冲方案可供选择,列在 fsspec.caching.caches
中(参见读取缓冲),或者选择“none”表示根本不进行缓冲,例如,对于简单的预读缓冲区,你可以这样做:
fs = fsspec.filesystem(...)
with fs.open(path, mode='rb', cache_type='readahead') as f:
use_for_something(f)