重命名功能不起作用,我尝试了以下方法
for (i in 1:length(file_list))
{
dest=paste("D:/R/Hr/New1",file_list[i],sep="/")
exe <- "C:\\Program Files\\xpdfbin-win-3.03\\bin32\\pdftotext.exe"
system(paste("\"", exe, "\" \"", dest, "\"", sep = ""), wait = F)
filetxt <- sub(".pdf", ".txt", dest)
fdest=paste("D:/R/Hr/New2/",file_list[i],sep="")
fdest <- sub(".pdf", ".txt",fdest)
#my.file.rename(filetxt,fdest)
file.rename(filetxt,fdest)
}
但没有重命名一个文件但没有循环可以正常工作
i=1
> dest=paste("D:/R/Hr/New1",file_list[i],sep="/")
> exe <- "C:\\Program Files\\xpdfbin-win-3.03\\bin32\\pdftotext.exe"
> system(paste("\"", exe, "\" \"", dest, "\"", sep = ""), wait = F)
> filetxt <- sub(".pdf", ".txt", dest)
> fdest=paste("D:/R/Hr/New2/",file_list[i],sep="")
> fdest <- sub(".pdf", ".txt",fdest)
> #my.file.rename(filetxt,fdest)
> file.rename(filetxt,fdest)
[1] TRUE
只是没有理解为什么这个问题以及如何解决这个问题,并且与此功能相同的输出
my.file.rename <- function(from, to) {
todir <- dirname(to)
if (!isTRUE(file.info(todir)$isdir)) dir.create(todir, recursive=TRUE)
file.rename(from = from, to = to)
}
为什么我不期望在for循环中重命名,任何帮助,谢谢
不需要任何循环,在Mac上似乎可以正常工作:
file_list = list.files("~/test/",pattern="*.pdf",full.names=TRUE)
fdest= sub(".pdf", ".txt",file_list)
file.rename(file_list,fdest)
print(list.files("~/test/",pattern="*.pdf",full.names=TRUE))
print(list.files("~/test/",pattern="*.txt",full.names=TRUE))
我的猜测是您wait = F
在系统调用中允许代码在可执行文件生成文件之前继续执行(即使这样做,它也可能已被锁定)。完成对pdftotext.exe的所有调用后,尝试将其设置为true并运行此代码
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句