执行后复制脚本

时间:2015-07-14 13:38:45

标签: r

是否有可能将执行的行或基本上的脚本复制到工作目录中?

所以我的正常情况是,我有一个独立的脚本,只需要在工作目录中获取,他们将完成我需要的一切。 几个月后,我对这些脚本进行了更新,我很乐意在执行源代码时从脚本中获取快照......

所以基本上file.copy(ITSELF, '.')或类似的东西。

2 个答案:

答案 0 :(得分:0)

我只是想添加我的解决方案,因为我决定在执行复制命令之前使用try函数...因为我感觉我错过了一些控制...

try({
  script_name <- sys.frame(1)$ofile
  copy_script_name <- 
    paste0(sub('\\.R', '', basename(script_name)),
           '_',
           format(Sys.time(), '%Y%m%d%H%M%S'),
           '.R')
  file.copy(script_name,
            copy_script_name)
})

这会将脚本复制到当前目录中,并为文件名添加时间戳。如果出现问题,脚本的其余部分仍将执行。

答案 1 :(得分:0)

我最初发布了该其他主题,并且认为它可以解决您的问题:https://stackoverflow.com/a/62781925/9076267

就我而言,我需要一种复制执行文件的方法来备份原始> script及其输出。这在研究中相对重要。 在命令行上运行脚本时,对我有用的是这里介绍的其他解决方案的组合,如下所示:

library(scriptName)
file_dir <- paste0(gsub("\\", "/", fileSnapshot()$path, fixed=TRUE))
file.copy(from = file.path(file_dir, scriptName::current_filename()) ,
          to = file.path(getwd(), scriptName::current_filename()))

或者,可以在文件名中添加日期和我们的名称,以帮助将文件与源文件区别开,如下所示:

file.copy(from = file.path(current_dir, current_filename()) ,
          to = file.path(getwd(), subDir, paste0(current_filename(),"_", Sys.time(), ".R")))