Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.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中提取gz文件_Python_Gzip - Fatal编程技术网

如何在python中提取gz文件

如何在python中提取gz文件,python,gzip,Python,Gzip,我有一个.gz文件,里面有另一个文件。我需要解压缩压缩文件中的文件 f = gzip.open(dest, 'rb') 这只会打开文件,但我需要下载gz中的特定文件,而不是只打开gz文件 这个问题被标记为重复,我接受,但我还没有找到一个解决方案,我们可以下载文件,而不仅仅是读取其内容。上述链接的情况也是如此。您只需打开两个文件,从压缩的gzip文件中读取,然后写入另一个文件(以块为单位,以避免阻塞内存) 否则,您可以使用shutil,如下所示: 这两种解决方案都可以在Python2和Pytho

我有一个
.gz
文件,里面有另一个文件。我需要解压缩压缩文件中的文件

f = gzip.open(dest, 'rb')
这只会打开文件,但我需要下载
gz
中的特定文件,而不是只打开
gz
文件


这个问题被标记为重复,我接受,但我还没有找到一个解决方案,我们可以下载文件,而不仅仅是读取其内容。上述链接的情况也是如此。

您只需打开两个文件,从压缩的
gzip
文件中读取,然后写入另一个文件(以块为单位,以避免阻塞内存)

否则,您可以使用
shutil
,如下所示:

这两种解决方案都可以在Python2和Python3中使用

就性能而言,至少在我的系统上,它们基本相同:

%timeit gunzip(source_filepath, dest_filepath)
# 129 ms ± 1.89 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit gunzip_shutil(source_filepath, dest_filepath)
# 132 ms ± 2.99 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

我已经这样解决了这个问题:

f = gzip.open(dest, 'r')
file_content = f.read()
file_content = file_content.decode('utf-8')
f_out = open('file', 'w+')
f_out.write(file_content)
f.close()
f_out.close()

dest是带有
gz

的文件。是否希望将其保存在某个位置(即,您基本上希望在Python中实现
gunzip
)?可能重复@norok2是将文件解压缩到任何目标place@Meyi我已经检查了那个链接。没有答案,我们可以在哪里下载实际的文件。请告诉我你指的是哪一个答案。?Thanks@SAndrewMeyi发布的链接显示了如何解压缩.gz文件。你真的想做点别的吗?您提到下载-您的意思是想从某个web服务器下载文件吗?您的解决方案是次优的,因为您可能会遇到大型文件的内存问题。此外,这将比可能的速度慢,因为您正在执行不必要的解码。与shell中的本机
gzip
命令相比,它的性能如何?@alper可能更差,因为gzip也在做同样的事情,但本质上是在C中。
%timeit gunzip(source_filepath, dest_filepath)
# 129 ms ± 1.89 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit gunzip_shutil(source_filepath, dest_filepath)
# 132 ms ± 2.99 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
f = gzip.open(dest, 'r')
file_content = f.read()
file_content = file_content.decode('utf-8')
f_out = open('file', 'w+')
f_out.write(file_content)
f.close()
f_out.close()