重命名功能不起作用,我试过以下
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
只是不知道为什么会出现这个问题,我怎么能摆脱这个问题,同样的o / p也有这个功能
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循环中重命名,任何帮助谢谢
答案 0 :(得分:1)
不需要任何循环,它似乎在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
允许代码在您的可执行文件生成文件之前继续(即使它确实存在,也可能被锁定)。尝试将其设置为true并在完成对pdftotext.exe的所有调用后运行此代码