【问题标题】:Rename within in for loop in windows在windows的for循环中重命名
【发布时间】:2014-01-30 13:54:13
【问题描述】:

重命名功能不起作用,我尝试了以下方法

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 循环中被重命名,任何帮助,谢谢

【问题讨论】:

    标签: r for-loop rename file-rename


    【解决方案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 允许代码在您的可执行文件生成文件之前继续执行(即使生成文件,它也可能被锁定)。在完成对 pdftotext.exe 的所有调用后,尝试将其设置为 true 并运行此代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2022-01-19
      • 2012-12-06
      • 2013-01-08
      • 2010-12-29
      • 1970-01-01
      • 2020-04-10
      相关资源
      最近更新 更多