R
确定文件是否压缩的最佳方法是什么?是否有任何特定的功能来检查?
我问的是与文件扩展名不同的东西,例如。
grepl("^.*(.gz|.bz2|.tar|.zip|.tgz|.gzip|.7z)[[:space:]]*$", filename)
答案 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/