【问题标题】:file.copy too slowfile.copy 太慢了
【发布时间】:2021-08-17 07:29:51
【问题描述】:

我正在尝试将一个 1.5G 文件从本地文件夹 A 复制并粘贴到共享驱动器文件夹 B 和另一个本地文件夹 C。file.copy 太慢了,大约需要 5-10 分钟。是否有其他改进性能的建议?

【问题讨论】:

  • 我想这与 R 或其 file.copy 函数几乎无关,它应该只是调用系统函数进行复制。
  • 同意@thelatemail,这可能是关于底层操作系统/系统复制过程的问题。 superuser.com 可能会更好...您能否详细说明您使用的是什么操作系统,共享驱动器在哪里(物理上)[例如什么样的网络连接]等? .谷歌搜索“慢速复制到共享驱动器”会带来很多关于 Windows 复制的信息。
  • 我手动ctrl c和ctrl v的时候还可以,但是用R复制粘贴,明显比手动低。这就是为什么我猜这是由于 file.copy 功能
  • 抱歉,我只是假设 R 的 file.copy 调用 .Internal 函数,这将是一个标准的系统调用。显然,我超前了!
  • 您能多谈谈您的操作系统吗? @user26055553 的答案应该可以工作,但在 Windows 上需要一个变体(并且可能因操作系统版本而异?)

标签: r copy-paste


【解决方案1】:

我不确定为什么(如果?)会发生这种情况,但您始终可以使用操作系统的本机命令。例如,假设您使用的是 macOS 或 Linux:

system(sprintf('cp %s %s', source, target))

source 和 target 是您的文件路径。

【讨论】:

  • 这值得一试。几乎可以肯定会向 OP 表明底层操作系统复制操作是问题所在,而不是 file.copy()
  • 我不确定。似乎 R 有它自己的副本,至少在某些情况下它在缓存等方面遇到了困难。例如:stackoverflow.com/questions/49888078/…
  • 好的,你每天都会学到一些东西!也许在您的答案中链接该问题? (了解更多关于 OP 的系统仍然会有所帮助)
  • @BenBolker - 好吧,我现在感觉自己像个莳萝! :-D
  • 感谢您的帖子,我尝试了您的代码,它不起作用,没有错误显示,但文件也没有移动,就像什么也没发生一样。这是我的代码:system(sprintf('cp %s %s', "C:/Users/myname/Documents/filename.accdb", "W:/path/Archive/filename.accdb"))。有什么建议吗?
【解决方案2】:

如果你在 Windows 上使用 powershell:

comm.cp <- paste0("powershell -command Copy-Item ",source," ", target, " -Force"  );
copied <- system(comm.cp, wait = TRUE);

【讨论】:

    猜你喜欢
    • 2013-03-10
    • 2014-06-07
    • 2016-05-31
    • 2011-07-07
    • 2015-08-23
    • 2012-07-05
    • 2016-01-08
    • 2014-03-12
    • 2021-03-26
    相关资源
    最近更新 更多