在R中将文件夹从一个目录复制到另一个目录

Posted

技术标签:

【中文标题】在R中将文件夹从一个目录复制到另一个目录【英文标题】:Copy folders from one directory to another in R 【发布时间】:2015-10-17 18:08:15 【问题描述】:

我有两个文件夹(比如“A”、“B”),它们位于一个文件夹中(比如“输入”)。我想将“A”和“B”复制到另一个文件夹(比如“输出”)。我可以在 R 中执行此操作吗?

【问题讨论】:

看看?file.copy 那是针对个别文件的权利。我想一次复制两个文件夹。 From in file.copy 获取文件向量,因此您可以一次复制两个文件夹。 我可以复制文件夹中的文件,但不能复制文件夹 【参考方案1】:

将当前目录文件复制到新目录

currentfiles 是您要复制的文件列表 newlocation 是您要复制到的目录

如果您没有列出当前文件,则需要遍历您的工作目录

file.copy(from=currentfiles, to=newlocation, 
          overwrite = TRUE, recursive = FALSE, 
          copy.mode = TRUE)

这是为了删除你的旧文件

file.remove(currentfiles)

【讨论】:

我可以复制文件夹中的文件,但不能复制文件夹。我删除了代码的递归部分。 根据 ?file.copy 文档,参数 overwrite 是合乎逻辑的。更改为 TRUEFALSE 由于 OP 没有反应我编辑了帖子,我已将覆盖设置为 TRUE,这意味着此操作可能具有破坏性,请谨慎使用或设置为 FALSE【参考方案2】:

我迟到了。这是我完成任务的简单方法。 在 R 中,

current_folder <- "C:/Users/Bhabani2077/Desktop/Current"
new_folder <- "C:/Users/Bhabani2077/Desktop/Ins"
list_of_files <- list.files(current_folder, ".py$") 
# ".py$" is the type of file you want to copy. Remove if copying all types of files. 
file.copy(file.path(current_folder,list_of_files), new_folder)

【讨论】:

list_of_files 创建中的当前文件夹名称错误 对不起。我的错。现在修正了错字。【参考方案3】:

我看到的所有关于这个问题的解决方案似乎都暗示了基于 Unix 的操作系统(Mac 和 Linux)。我认为响应对 OP 不起作用的原因是 OP 可能在 Windows 上。

在 Windows 中,文件的定义就是文件,而 Unix 将文件定义为文件或目录。我相信这可能是 file.copy() 不起作用的原因,基于我对“文件操作”R 文档的理解 - 输入到 file.copy() 的“来自”字段的参数必须是文件(而不是目录),但也可以是“to”字段的文件或目录。

【讨论】:

【参考方案4】:

fs 包提供了一种替代解决方案,可以准确回答原始问题

library(fs)

我已经使用工作目录中建议的结构创建了“输入”文件夹

fs::dir_tree()
#> .
#> +-- copy_folder.R
#> +-- copy_folder.Rproj
#> \-- input
#>     +-- A
#>     |   +-- C
#>     |   \-- exampleA.txt
#>     +-- B
#>     |   \-- exampleB.txt
#>     \-- D
fs::dir_copy("input/A", "output/A")
fs::dir_copy("input/B", "output/B")
fs::dir_tree()
#> .
#> +-- copy_folder.R
#> +-- copy_folder.Rproj
#> +-- input
#> |   +-- A
#> |   |   +-- C
#> |   |   \-- exampleA.txt
#> |   +-- B
#> |   |   \-- exampleB.txt
#> |   \-- D
#> \-- output
#>     +-- A
#>     |   +-- C
#>     |   \-- exampleA.txt
#>     \-- B
#>         \-- exampleB.txt

请注意,我们在一般情况下工作,即“输入”文件夹包含文件夹“A”和“B”之外的其他文件夹和文件。

如果“input”文件夹只包含文件夹“A”和“B”,一行代码就足够了:

fs::dir_copy("input", "output")

由reprex package (v2.0.0) 于 2021-07-03 创建

【讨论】:

以上是关于在R中将文件夹从一个目录复制到另一个目录的主要内容,如果未能解决你的问题,请参考以下文章

如何在PHP中将所有文件和文件夹从一个目录移动到另一个目录?

linux 怎样复制一个目录的所有文件到另一个目录

如何在 C++ 中将一个对象从一个向量复制到另一个向量?

在android中将数据从一个文件复制到另一个文件非常慢?

如果该文件夹不存在,如何通过创建文件夹将文件从一个目录复制到另一个目录

在 vi 中将内容从一个文件复制并粘贴到另一个文件