如何在错误处理后关闭R中的文件连接?

时间:2016-09-15 16:54:31

标签: r file

我一直在使用read.dbc package中的read.dbc函数,它对我来说很好。

不幸的是,有时候要读取的文件已损坏。为了解决这个问题,我使用了try语句。问题是损坏的文件保持"打开"在R中,直到我完成R会话,在会话结束之前,我无法删除该文件。

我的代码是:

ReadFile <- try(read.dbc("C:/LocalPath/A_File.txt"))

有没有办法去关闭&#34;提前连接(无需结束会话)?

此外,我尝试使用rm()删除变量,然后使用gc()清除内存,但文件保持打开状态。

更多详情:RStudio v0.99.484,R v3.3.1(x64),OS Windows 7 Enterprise SP1

PS。:要重现错误,只需尝试读取任何不是dbc文件的文件,例如TXT文件。

1 个答案:

答案 0 :(得分:1)

我不认为这可以在R中完成,因为文件是从C代码锁定的。如果查看this文件中的函数dbc2dbf,可以看到它打开文件并尝试解压缩。错误“处理”只是打印错误并返回,但不关闭打开的文件,这是不好的做法imo。 (或者如果你想这么称呼它就是一个bug。)

如果您在意,可以在项目的github网站上打开一个问题,也许作者可以解决问题。

如果您迫切需要(:P)工作版本,我已经编译了一个快速修复程序,只是在它发出错误信号之前调用fclose。

您可以下载here。只需打开包装并复制到您的R库。加载library(custom.read.dbc)