Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mmap和gzip可以合作吗?_Python_Gzip_Mmap - Fatal编程技术网

Python mmap和gzip可以合作吗?

Python mmap和gzip可以合作吗?,python,gzip,mmap,Python,Gzip,Mmap,我正在试图找出如何将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) 导入mmap 导入操作系统 导入gzip file

我正在试图找出如何将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) 导入mmap 导入操作系统 导入gzip filename=r'C:\temp\data.gz' file=gzip.open(文件名为“rb+”) size=os.path.getsize(文件名) file=mmap.mmap(file.fileno(),大小) 打印文件。读取(8)
输出数据被压缩。

好吧,不是你想要的方式

如果压缩数据是您想要的,则可以使用mmap()访问gzip文件

mmap()是一个系统调用,用于将磁盘块映射到RAM,就像添加交换一样


您无法使用mmap()将未压缩的数据映射到RAM中,因为它不在磁盘上。

您可以轻松地进行映射。事实上,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()

似乎没有C++或C,因为<代码>;<代码>在行尾缺少。可能是Python或Ruby?@uwe,导入语法&那些库函数是Pythontanks,@Tobyodvies,我添加了标记。你在找zlib吗?zlib的算法与gzip相同,不过您可能需要调整一些设置才能使其工作完全相同。