移动文件夹之间的文件

67

我想使用R将一个文件从一个文件夹复制/粘贴到另一个文件夹中,但不起作用。我的代码:

> file.rename(from="C:/Users/msc2/Desktop/rabata.txt",to="C:/Users/msc2/Desktop/Halwa/BADMASHI/SCOP/rabata.tx")

[1] FALSE

1
你的语法没问题;确保源文件和目标文件夹已经存在。 - Hong Ooi
你试过使用 file.copy 而不是 file.rename 吗? - Henrik
除了其他评论之外,请说明您收到的确切错误。 - Paul Hiemstra
1
file.exists("C:/Users/msc2/Desktop/rabata.txt") 告诉你什么? - Tyler Rinker
file.exists("C:/Users/msc2/Desktop/Halwa/BADMASHI/SCOP") [1] TRUE
但是 > file.exists("C:/Users/msc2/Desktop/Halwa/BADMASHI/SCOP/") [1] FALSE
- Sagar Nikam
显示剩余2条评论
6个回答

76
如果你想要一个类似于file.rename()的函数,并且该函数还可以创建所需的任何目录以执行重命名操作,你可以尝试像这样编写代码:
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)
}

my.file.rename(from = "C:/Users/msc2/Desktop/rabata.txt",
               to = "C:/Users/msc2/Desktop/Halwa/BADMASHI/SCOP/rabata.txt")

我正在尝试将一个文件从/tmp移动到~,但是出现了“无效的跨设备链接”错误,我该如何解决? - Alejandro Alcalde
1
"file.rename" 无法在不同的挂载点之间移动文件。我猜在你的情况下,/tmp 和 /home 是在不同的分区和挂载点上。 在这种情况下,您可以先复制文件,然后再删除旧文件,或者您可以使用 fs 包中的 file_move,该函数似乎能够在不同的挂载点之间移动文件。 - amitr

42

请注意,file.rename 实际上会从“from”文件夹中删除该文件。如果您只想创建一个副本并将原文件留在原处,请改用 file.copy


17

使用 file.copy() 或者 fs::file_copy()

file.copy(from = "path_to_original_file",
          to   = "path_to_move_to")

接着你可以使用file.remove()函数删除原始文件:

file.remove("path_to_original_file")

更新于2021-10-08:您也可以使用fs::file_copy()。我喜欢{fs},它可以在R语言中实现一致的文件和目录管理。


5
你可以尝试使用filesstrings库。此选项将文件移动到目录中。示例代码:
首先,我们创建一个样例目录和文件:
dir.create("My_directory")
file.create("My_file.txt")

其次,我们可以将My_file.txt移动到创建的目录My_directory中:

file.move("My_file.txt", "My_directory")

0

你在第二个扩展名中缺少了一个“t”字母。尝试这样做:

file.rename(from="C:/Users/msc2/Desktop/rabata.txt",to="C:/Users/msc2/Desktop/Halwa/BADMASHI/SCOP/rabata.txt").

此外,尝试使用file.copy()函数可能是值得的。它专门设计用于复制文件而不是重命名。

0
fs::file_move("oldfile.txt", "some/other/existing/directory/newfile.txt")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接