如何检查文件是否在R中压缩

时间:2015-04-07 13:53:53

标签: r

R确定文件是否压缩的最佳方法是什么?是否有任何特定的功能来检查? 我问的是与文件扩展名不同的东西,例如。

grepl("^.*(.gz|.bz2|.tar|.zip|.tgz|.gzip|.7z)[[:space:]]*$", filename)

3 个答案:

答案 0 :(得分:3)

在R中,执行此操作:

filetype = summary( file('yourfile.gz') )$class

如果是gzip,filetype将为gzfile


注意:您可能还希望将文件分配给变量并在

之后关闭连接
filetype <- function(path){
    f = file(path)
    ext = summary(f)$class
    close.connection(f)
    ext
}

答案 1 :(得分:2)

如果您使用的是Linux(或类似版本),则可以使用file命令。 E.g。

file filename

这将告诉您有关各种格式的有用信息,例如,如果文件是使用gzip压缩的(R可以直接读取的格式之一)。

答案 2 :(得分:1)

如果您安装了Java,则可以使用免费工具Apache Tika来探测文件的元数据。

下载后设置:

alias tika='java -jar /opt/java_shared/tika/tika-app-1.7.jar'

解析文件(慢,需要约5秒)

tika -m chroma-1.15.tar.bz2

Content-Length: 2690725
Content-Type: application/x-bzip2
X-Parsed-By: org.apache.tika.parser.DefaultParser
X-Parsed-By: org.apache.tika.parser.pkg.CompressorParser
resourceName: chroma-1.15.tar.bz2

另一个例子:

echo "hi there" > notazipfile.zip 

tika -m notazipfile.zip 

Content-Encoding: ISO-8859-1
Content-Length: 9
Content-Type: text/plain; charset=ISO-8859-1
X-Parsed-By: org.apache.tika.parser.DefaultParser
X-Parsed-By: org.apache.tika.parser.txt.TXTParser
resourceName: notazipfile.zip

有一个帮助页面:

tika --help

长名单:

tika --list-supported-types | grep -C 3 bzip2

application/x-bzip
  supertype: application/octet-stream
  parser:    org.apache.tika.parser.pkg.CompressorParser

再次:探测大文件可能需要一段时间。

请注意,有一个网站,有人开始创建一个R界面,但这个网页是从2012年开始的,似乎是不活跃的: https://r-forge.r-project.org/projects/r-tika/