我正在尝试弄清楚如何将 mmap 与 gzip 压缩文件一起使用。这可能吗?
import mmap import os import gzip filename = r'C:\temp\data.gz' file = gzip.open(filename, "rb+") size = os.path.getsize(filename) file = mmap.mmap(file.fileno(), size) print file.read(8)
输出数据被压缩。
最佳答案
你可以轻松做到。事实上,gzip 模块将一个类似文件的对象作为可选参数。
import mmap
import gzip
filename = "a.gz"
handle = open(filename, "rb")
mapped = mmap.mmap(handle.fileno(), 0, access=mmap.ACCESS_READ)
gzfile = gzip.GzipFile(mode="r", fileobj=mapped)
print gzfile.read()
这同样适用于 tarfile 模块:
import sys
import mmap
import tarfile
f = open(sys.argv[1], 'rb')
fo = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
tf = tarfile.open(mode='r:gz', fileobj=fo)
print tf.getnames()
关于python - mmap 和 gzip 可以协作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5127921/