读取 tar.gz 中的文件名或文件数
Posted
技术标签:
【中文标题】读取 tar.gz 中的文件名或文件数【英文标题】:Read the file names or the number of files in tar.gz 【发布时间】:2015-01-19 08:26:23 【问题描述】:我有一个 tar.gz 文件,其中包含多个存档的 csv 文件。我需要阅读文件名列表或至少文件数。
这是我尝试过的:
require 'zlib'
file = Zlib::GzipReader.open('test/data/file_name.tar.gz')
file.each_line do |line|
p line
end
但这只会打印 csv 文件中的每一行,而不是文件名。我也试过这个:
require 'zlib'
Zlib::GzipReader.open('test/data/file_name.tar.gz') | f |
p f.read
读起来类似,但逐个字符而不是逐行。
知道如何获取文件名列表或至少是存档中的文件数吗?
【问题讨论】:
使用这个Zip
库。只需解压zip文件,统计解压目录下的文件数即可。
【参考方案1】:
您需要在未压缩的输出上使用tar reader。
“.tar.gz”表示应用了两个进程来生成文件。首先,一组文件被“tarred”以制作一个“.tar”文件,其中包含一系列(文件头块,未压缩的文件数据)单元。然后将其压缩为单个字节流,以制作“.tar.gz”。实际上,.tar 文件很可能从未存储在任何地方,而是作为字节流生成并动态压缩以直接写出 .tar.gz 文件。
要获取内容,您需要反转过程,解压缩,然后将结果提供给 tar 阅读器,以解释文件头块并提取数据。同样,您可以即时解压缩并读取 tar 文件内容,无需存储中间 .tar 文件。
【讨论】:
谢谢你,这真的很有帮助!欣赏它。以上是关于读取 tar.gz 中的文件名或文件数的主要内容,如果未能解决你的问题,请参考以下文章
从 tar.gz 文件夹中读取 json 文件并转换为 pandas 数据框 [重复]