r - 检查存档中文件的存在(zip)

标签 r

我正在使用 unz 从存档中的文件中提取数据。这实际上工作得很好,但不幸的是我有很多 zip 文件,需要检查存档中是否存在特定文件。我无法通过 获得有效的解决方案如果存在 要不然。

有谁知道如何检查文件中是否存在文件 没有 之前提取整个文件?

例子:

read.table(unz(D:/Data/Test.zip, "data.csv"), sep = ";")[-1,]

如果 data.csv,这很有效存在但如果文件在存档中不可用,则会出现错误 Test.zip .
Error in open.connection(file, "rt") : cannot open the connection  
In addition: Warning message:
In open.connection(file, "rt") :  
  cannot locate file 'data.csv' in zip file 'D:/Data/Test.zip'

欢迎任何意见!

最佳答案

您可以使用 unzip(file, list = TRUE)$Name无需解压缩即可获取 zip 中文件的名称。然后您可以检查您需要的文件是否在列表中。

## character vector of all file names in the zip
fileNames <- unzip("D:/Data/Test.zip", list = TRUE)$Name

## check if any of those are 'data.csv' (or others)
check <- basename(fileNames) %in% "data.csv"

## extract only the matching files
if(any(check)) {
    unzip("D:/Data/Test.zip", files = fileNames[check], junkpaths = TRUE)
}

你也许可以再放一个 if()要运行的语句 unz()在只有一个匹配的文件名的情况下,因为它比运行 unzip() 更快在单个文件上。

关于r - 检查存档中文件的存在(zip),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28254592/

相关文章:

mysql - 将列值作为 mysql 数据库中现有表名传递

r - 创建一个列,列出该特定行中包含负值的所有列名称

r - 如何使用 RMarkdown 中的 render() 函数自动打开输出文件

r - 如何在申请家庭内分配?

r - 检测字符串的类型并相应地创建新变量

R: ggplot2让geom_text的字符正好覆盖1个X单位

r - 将数据帧与数据帧列表相匹配,并将新变量添加到 R 中的列表中

r - 在 RStudio 中调试 'testthat' 测试

r - 在 R 中分配数据帧时使用 '=' 与 '<-' 运算符的不同行为

r - R包中的src-{i386,x64}文件夹