如何在R中检查文件是否为zip?

时间:2019-03-21 15:18:14

标签: r file parsing zip downloadfile

我有很多这样的文件:

temp1 <- tempfile()

temp2 <- tempfile()

download.file("https://my.pgp-hms.org/user_file/download/3658", temp1)

download.file('https://my.pgp-hms.org/user_file/download/3671', temp2)

一个是文本(一个是16.1MB,另一个是5.6MB的zip)。

请告知我如何即时检查?这是一个公共数据集,我不能告诉作者几年前更改保存数据的方式。

我尝试过summary(file(filename))$class,但没有帮助我。

我在这里在StackOverFlow上读到read.table可以做到这一点,它实际上可以做到,但是当它被压缩时,我变得乱七八糟。

1 个答案:

答案 0 :(得分:2)

我不知道有任何内置的R功能,但是您可以尝试类似的方法。它只是一个小的自定义函数,在该函数中,它尝试列出zip文件中包含的文件,如果它可以列出文件,则返回TRUE。如果遇到错误,则无法解压缩该文件,并返回FALSE值。但这并不是100%准确的,因为如果您正在测试类似xlsx文件的内容,则会得到误报。

is.zip <- function(filepath){
  result <- tryCatch({
              unzip(filepath, list = TRUE)
              return(TRUE)
            }, error = function(e){
              return(FALSE)
            })
  return(result)
}

is.zip(temp1)
is.zip(temp2)