我一直在使用 RDCOMClient 与供应商软件进行交互。在大多数情况下,它运行良好。然而,最近,我需要循环执行许多操作(数百个)。我遇到了 RDCOM.err 文件增长到非常大(很容易 GB)的问题。这个文件放在 C: 中,没有明显的选项可以改变它。有什么方法可以抑制这个输出或为文件指定另一个位置吗?我不需要文件中的任何输出,因此最好抑制它。
编辑:我试图添加到我的脚本 afile.remove
但 R 已锁定文件。我可以释放锁的唯一方法是重新启动 R。
谢谢。
我一直在使用 RDCOMClient 与供应商软件进行交互。在大多数情况下,它运行良好。然而,最近,我需要循环执行许多操作(数百个)。我遇到了 RDCOM.err 文件增长到非常大(很容易 GB)的问题。这个文件放在 C: 中,没有明显的选项可以改变它。有什么方法可以抑制这个输出或为文件指定另一个位置吗?我不需要文件中的任何输出,因此最好抑制它。
编辑:我试图添加到我的脚本 afile.remove
但 R 已锁定文件。我可以释放锁的唯一方法是重新启动 R。
谢谢。
将权限设置为只读将是我建议的技巧。
一种稍微优雅一点的方法是在 src/RUtils.h 中将包中的一行 C 代码编辑
\#define errorLog(a,...) fprintf(getErrorFILE(), a, ##__VA_ARGS__); fflush(getErrorFILE());
为
\#define errorLog(a, ...) {}
但是,我在 github 上对包进行了一些简单的更新,添加了一个 writeErrors() 函数,可以用来切换是否写入错误。因此,这允许动态打开和关闭它。因此
library(RDCOMClient)
writeErrors(FALSE)
将关闭错误记录到文件。
我找到了解决这个问题的方法。我创建了文件 C:\RDCOM.err 和 C:\RDCOM_server.err 并将它们都标记为只读。我不确定是否有更好的方法来实现这一点,但现在我正在运行而不记录。