gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:24:12 34 4
gpt4 key购买 nike

我正在使用 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/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com