使用 R 删除文件的最快方法是什么
what is the fastest way to delete files using R
我有一个文件夹,我每天必须从中删除大约 4,000 个 .rds
文件。这些文件不超过几千字节(最大大小:73 kb),但每次我尝试通过 R
删除它们时,都可能需要一段时间(如果我手动删除它们也是如此)。我想知道是否有其他方法可以更快地删除它们?
我如何删除文件:
# ***********************************************************************
# METHOD # 1 :
# reads all the .rds files from folder
files2 <- list.files(paste("/Volumes/share/ZZZ/GOOGLE1/"))
# I use lapply along with file.remove()
TR <- lapply(as.list(files2),function(x) file.remove(paste0("/Volumes/share/ZZZ/GOOGLE1/",x,"")))
# ***********************************************************************
# METHOD #2 :
do.call(unlink,list(list.files("/Volumes/share/ZZZ/GOOGLE1/",full.names=TRUE)))
# ***********************************************************************
# METHOD # 3 :
unlink("/Volumes/share/ZZZ/GOOGLE1/", recursive=TRUE, force=TRUE)
我通过为每种方法删除 100 个文件来测试所有 3 种方法
结果:
METHOD #1 :
user system elapsed
0.014 0.064 44.133
METHOD #2 :
user system elapsed
0.010 0.047 36.447
METHOD #3 :
user system elapsed
0.009 0.057 43.400
sessionInfo()
R version 3.3.0 (2016-05-03)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.5 (El Capitan)
你想删除r.d中的文件吗?我正在使用这个
rm(文件)
unlink()
接受通配符,因此您可以执行以下操作,这在我的系统上似乎相当快:
system.time({ unlink('*.rds'); }); ## deleted 4000 ~65KB files
## user system elapsed
## 0.140 0.922 1.151
请注意,@Thomas 建议将 system()
与 wait=F
一起使用是个好主意,但有几个缺点:(1) 它依赖于平台,(2) 您将无法检查删除命令的 return 代码,因为它是 运行 异步的,并且 (3) 它可能会引入竞争条件;例如,如果后续代码快速写入一个新的 *.rds
文件,那么它最终可能会被异步删除命令删除。
我有一个文件夹,我每天必须从中删除大约 4,000 个 .rds
文件。这些文件不超过几千字节(最大大小:73 kb),但每次我尝试通过 R
删除它们时,都可能需要一段时间(如果我手动删除它们也是如此)。我想知道是否有其他方法可以更快地删除它们?
我如何删除文件:
# ***********************************************************************
# METHOD # 1 :
# reads all the .rds files from folder
files2 <- list.files(paste("/Volumes/share/ZZZ/GOOGLE1/"))
# I use lapply along with file.remove()
TR <- lapply(as.list(files2),function(x) file.remove(paste0("/Volumes/share/ZZZ/GOOGLE1/",x,"")))
# ***********************************************************************
# METHOD #2 :
do.call(unlink,list(list.files("/Volumes/share/ZZZ/GOOGLE1/",full.names=TRUE)))
# ***********************************************************************
# METHOD # 3 :
unlink("/Volumes/share/ZZZ/GOOGLE1/", recursive=TRUE, force=TRUE)
我通过为每种方法删除 100 个文件来测试所有 3 种方法
结果:
METHOD #1 :
user system elapsed
0.014 0.064 44.133
METHOD #2 :
user system elapsed
0.010 0.047 36.447
METHOD #3 :
user system elapsed
0.009 0.057 43.400
sessionInfo()
R version 3.3.0 (2016-05-03)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.5 (El Capitan)
你想删除r.d中的文件吗?我正在使用这个
rm(文件)
unlink()
接受通配符,因此您可以执行以下操作,这在我的系统上似乎相当快:
system.time({ unlink('*.rds'); }); ## deleted 4000 ~65KB files
## user system elapsed
## 0.140 0.922 1.151
请注意,@Thomas 建议将 system()
与 wait=F
一起使用是个好主意,但有几个缺点:(1) 它依赖于平台,(2) 您将无法检查删除命令的 return 代码,因为它是 运行 异步的,并且 (3) 它可能会引入竞争条件;例如,如果后续代码快速写入一个新的 *.rds
文件,那么它最终可能会被异步删除命令删除。