Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R函数download.file出错:打开的文件太多_R_Windows_Url_Download_Locking - Fatal编程技术网

R函数download.file出错:打开的文件太多

R函数download.file出错:打开的文件太多,r,windows,url,download,locking,R,Windows,Url,Download,Locking,我正在使用: download.file(url,path_file,mode="wb",quiet=quiet) 使用Windows 7上的R版本3.2.3(2015-12-10)复制大量图像(TIFF文件)。我必须复制大量文件:300'00,但由于以下问题在某个点失败: 无法打开文件“tmp/74114070005_531__0.tiff”,原因是 “打开的文件太多” 问题是,url的副本有时会失败,R会创建一个大小为0字节的空文件,但Windows会锁定该文件,因此我无法删除它。因此,

我正在使用:

 download.file(url,path_file,mode="wb",quiet=quiet)
使用Windows 7上的R版本3.2.3(2015-12-10)复制大量图像(TIFF文件)。我必须复制大量文件:300'00,但由于以下问题在某个点失败:

无法打开文件“tmp/74114070005_531__0.tiff”,原因是 “打开的文件太多”

问题是,url的副本有时会失败,R会创建一个大小为0字节的空文件,但Windows会锁定该文件,因此我无法删除它。因此,失败的文件一直保持打开状态,直到我退出R。经过一定数量的失败复制后,我得到了上面的错误“打开的文件太多”

是否有方法关闭每个文件的连接?我尝试了closeAllConnections(),但没有效果

有没有办法运行一个R命令行来“重新启动”R程序,这样Windows就可以解锁文件了

任何其他想法都欢迎

谢谢


Fabien

这是锁定文件的Windows的问题。最好的办法是避开窗户。对于需要使用Windows的用户,有一个解决方案。我用Windows 7测试了它:

  • 从以下位置复制handle.exe(或handle64.exe):
  • 以管理员身份打开cmd提示符windwos
  • 查找锁文件的句柄:handle64.exe-nobanner-p python.exe pattern\u
  • handle64.exe-p pid_your_文件-c handle_your_文件

这避免了所有这些被锁定的文件

也许你在使用httr::GET(url,httr::write_disk(path))@0时运气会更好,谢谢。我还没有尝试,但我选择上一个函数的原因是,由于“wininet”,它会自动获取凭据。使用其他工具,我成功地进行了代理身份验证,但后来我被卡在了我公司的Kerberose身份验证上。恐怕我会先处理这个问题。在Windows中解锁文件看起来并不容易。尝试重新启动似乎是一个可能的选择,如果我设法做到这一点。谢谢