删除临时文件

时间:2013-06-26 16:55:37

标签: stata temporary-files delete-file

我想删除或删除.do文件中的临时文件的内容,以节省内存。我知道该文件应该在.do文件完成时清除,但我想知道是否可以在不再需要它之后中途删除它们。

想到的是打开文件。删除所有观察结果(我先知道文件大小的上限)。然后执行save-replace以减小文件的大小。虽然这有效,但我怀疑它是最有效的解决方案,因为它需要打开一个可能很大的文件,大致知道文件的大小,文件仍然存在,尽管只是少量。

这是我为删除临时文件而生成的代码:

  tempfile temp1 temp2
  /* LOTS OF CODE HERE */
  clear
  set mem 1197m
  foreach X in temp1 temp2 {
    clear
    set mem 1197m
    use "``X''"
    drop if _n <= 20000000
    save "``X''", replace
  }

2 个答案:

答案 0 :(得分:2)

如果您确实需要删除临时文件,请使用eraseerase是Stata用于跨平台删除文件的命令。当然,Stata会与任何操作系统进行对话。

您的代码假定临时文件将是Stata .dta文件,而不是Stata所做的假设。但这是一个细节:你不需要任何奇怪或圆形的东西。

答案 1 :(得分:0)

删除临时文件没有意义。它们在您的硬盘上,而不在您的内存中,所以如果有的话,将命令发送到操作系统以对该文件执行任何操作(useerasels,等等)对您的计算时间造成不必要的损失,特别是如果您有20M的观察结果,即使在最快的服务器上也需要几秒钟的时间。我在删除临时文件时可以看到的唯一原因是,如果您使用的网络具有非常严格的使用配额,并且每个临时文件占用剩余配额的一半 - 换句话说,保存`temp2'时可能抛出配额并产生一条错误消息,否则你可以避免。如果你不是那种情况,你可以留下这些文件。 Stata会比你自己更好地清理这些文件。