r语言 - 像这样解压缩使用名称和下载日期保存的压缩文件(Query Transaction History_20221126



我有一个数据相关的问题,

我想解压缩下载文件夹中的文件。

这个zip文件是供日常使用的,这意味着我每天都会继续下载,zip文件夹名称通常包含下载的日期和时间作为文件夹名称。zip文件夹的名称通常如下所示:

查询事务历史y_20221125035935_42217.zip

文件夹中的excel文件是这样的

查询事务History_20221126035617_01.xls

如果你仔细检查zip文件和xls的名称是名称(Query Transaction History_)和下载日期和时间(20221126035617_01)的组合

所以我能够想出下面的脚本。

library(plyr)
my_dir<-"C:/Users/Guest 1/Downloads"
zip_files <-list.files(path ="C:/Users/Guest 1/Downloads",
pattern ="Query Transaction History_20221126.*zip",full.names = TRUE )
ldply(.data =zip_files,.fun = unzip,exdir =my_dir )

可以正常工作并将文件解压缩到下载文件夹。但这是我将继续每天做的事情,日期将不断变化,而名称是恒定的,所以我尝试了这个代码。

library(glue)
sea<-format(Sys.Date(),"%Y%m%d") #formatting date to suit the date attached to zip file
zip_files <-list.files(path ="C:/Users/Guest 1/Downloads",
pattern =glue("Query Transaction History_{sea}.*zip",full.names = TRUE )) #using glue to glue the date variable and attached it to the zipped file and run.

可以正常工作

现在使用

下面的apply函数解压缩
ldply(.data =zip_files,.fun = unzip,exdir =my_dir )#using apply to unzip

我得到下面的错误

Warning message:
In FUN(X[[i]], ...) : error 1 in extracting from zip file

感谢

对于位于getwd()外部的zip文件,您需要指定完整的文件路径,如下所示:

ldply(.data =zip_files,
.fun = function(file_name){ 
unzip(file.path("C:/Users/Guest 1/Downloads", 
file_name),
exdir = my_dir
)
}
)

注意:除非您需要{plyr},否则您可以使用基础RsapplyMap而不是ldply

最新更新