当前位置: 首页 > 面试题库 >

如何列出gz文件的内容而不在python中解压缩?

白博易
2023-03-14
问题内容

我有一个.gz文件,我需要使用python获取其中的文件名。

这个问题是一样的这一个

唯一的区别是我的文件.gz不是,.tar.gz所以tarfile库在这里没有帮助我

我正在使用requests库来请求URL。响应是一个压缩文件。

这是我用来下载文件的代码

response = requests.get(line.rstrip(), stream=True)
        if response.status_code == 200:
            with open(str(base_output_dir)+"/"+str(current_dir)+"/"+str(count)+".gz", 'wb') as out_file:
                shutil.copyfileobj(response.raw, out_file)
            del response

例如,此代码以名称下载文件1.gz。现在,如果我使用存档管理器打开文件,则该文件将包含以下内容my_latest_data.json

我需要提取文件,输出为my_latest_data.json

这是我用来提取文件的代码

inF = gzip.open(f, 'rb')
outfilename = f.split(".")[0]
outF = open(outfilename, 'wb')
outF.write(inF.read())
inF.close()
outF.close()

outputfilename变量是我在脚本中提供的字符串,但我需要真实的文件名(my_latest_data.json


问题答案:

您不能,因为Gzip不是存档格式。

它本身就是一个废话,所以让我比在评论中做的更多。

只是压缩

“只是一个压缩系统”意味着Gzip对输入字节(通常来自文件)进行操作并输出压缩字节。您不知道其中的字节代表多个文件还是仅代表一个文件-它 只是
已压缩的字节流。例如,这就是为什么您可以通过网络接受压缩数据的原因。它的bytes_in-> bytes_out。

什么是清单?

清单是存档中的标头,用作该存档的目录。请注意,现在我使用的是术语“存档”,而不是“压缩字节流”。存档意味着它是清单所引用的文件或段的集合-压缩的字节流
只是 字节流。

反正Gzip里面有什么?

.gz文件内容的简化描述如下:

  1. 标有特殊编号的标头,以指示其gzip,版本和时间戳(10字节)
  2. 可选标题;通常包括原始文件名(如果压缩目标是文件)
  3. 身体-一些压缩的有效载荷
  4. 最后一个CRC-32校验和(8个字节)

而已。没有清单。

另一方面,存档格式将在内部显示清单。这就是tar库的所在。Tar只是将一堆位推到一个文件中的一种方法,并将清单放在最前面,让您知道原始文件的名称以及它们的大小。连接到存档中。因此,.tar.gz是如此普遍。

有一些实用程序可让您一次解压缩压缩文件的一部分,或仅在内存中解压缩文件,然后让您检查清单或其中的任何内容。但是任何清单的详细信息都是特定于其中包含的存档格式的。

请注意,这与 zip 存档不同。Zip 一种存档格式,因此包含清单。Gzip是一个 压缩 库,例如bzip2和朋友。



 类似资料:
  • 问题内容: 这就是问题所在。我有sample.gz文件,大小约为60KB。我想解压缩该文件的前2000个字节。我遇到了CRC检查失败的错误,我猜是因为gzip CRC字段出现在文件末尾,并且它需要整个gzip压缩文件进行解压缩。有办法解决这个问题吗?我不在乎CRC检查。即使由于CRC错误而无法解压缩,也可以。有没有办法解决这个问题并解压缩部分.gz文件? 我到目前为止的代码是 遇到的错误是 还可以

  • 问题内容: 我有一个tar文件,其中包含许多文件。我需要编写一个python脚本,该脚本将读取文件的内容并提供总数字符的计数,包括字母,空格,换行符的总数,所有内容,而无需解压缩tar文件。 问题答案: 您可以使用 之后,您可以用来将成员提取为文件对象。只是一个例子 对于上面示例中的文件对象,可以使用,等等。

  • 本文向大家介绍如何在Python中列出目录的内容?,包括了如何在Python中列出目录的内容?的使用技巧和注意事项,需要的朋友参考一下 os.listdir(my_path)将为您提供my_path目录中的所有内容-文件和目录。 示例 您可以按以下方式使用它: 如果只需要文件,则可以使用isfile对其进行过滤:

  • 问题内容: 如何从命令外壳中获得与.zip文件(而不是gzip)的等价形式,而无需将其解压缩?也就是说,如何列出.zip压缩文件中压缩的不同文件? 问题答案: Perreal的答案是正确的,但我建议安装工具(在发行版的软件包管理器中查找)。然后,对于任何类型的存档文件,bzip2,gzip,tar …,您只需记住一个命令:

  • 问题内容: 在特定文件夹中拥有所有需要的文件后,我希望我的python脚本压缩该文件夹中的内容。 这可能吗? 我该怎么做呢? 问题答案: 脚本的改编版本为: 例: 它创建包含目录内容的存档。