我有一个数据相关的问题,
我想解压缩下载文件夹中的文件。
这个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},否则您可以使用基础Rsapply
或Map
而不是ldply
。