Windows中TEMP目录的限制?

我有一个用Python编写的应用程序将大量的数据写入%TEMP%文件夹。 奇怪的是,每过一段时间,它就会死亡,返回IOError: [Errno 28] No space left on device 。 该驱动器有足够的可用空间, %TEMP%不是自己的分区,我是pipe理员,系统没有配额。

Windows是否在%TEMP%人为设置了某些types的数据限制? 如果没有,有什么可能会导致这个问题的想法?

编辑 :下面的讨论,我澄清了这个问题,以更好地解释发生了什么事情。

Solutions Collecting From Web of "Windows中TEMP目录的限制?"

你遇到什么确切的错误?

你是否创建了太多的临时文件 ?

如果GetTempFileName方法用于创建超过65535个文件而不删除以前的临时文件,则会引发IOException。

如果没有唯一的临时文件名可用,则GetTempFileName方法将引发IOException。 要解决此错误,请删除所有不需要的临时文件。

有一点需要注意的是,如果您间接使用Win32 API,并且只使用它来获取临时文件名,请注意,在(间接)调用它时:

在磁盘上 创建一个唯一命名的零字节临时文件,并返回该文件的完整路径。

如果你正在使用这个路径,但也改变返回的值,请注意你可能实际上正在创建一个0字节的文件和一个额外的文件(例如My_App_tmpXXXX.tmp和tmpXXXX.tmp)。

正如下面的内斯特建议的,考虑在完成使用后删除临时文件。

使用FAT32文件系统,我可以想象这发生在:

  • 将大量数据写入一个文件,并达到4GB文件大小上限。
  • 或者当你创建大量的小文件,并达到每个目录上限的2 ^ 16-2文件。

除此之外,我不知道系统可能对临时文件夹施加任何限制,除了实际上已经满了分区分区。

另一个限制是Mike Atlas提出了创建类型为tmpXXXX.tmp文件的GetTempFileName()函数。 尽管您可能没有直接使用它,但请验证%TEMP%文件夹中是否包含太多(2 ^ 16)。

也许很明显,你有没有尝试运行实用程序之前清空%TEMP%文件夹?

Temp中不应该有这样的空间限制。 如果你写的应用程序,我会建议在ProgramData中创建您的文件…

关于你的%TEMP%目录应该没有任何问题。

对于%TEMP%的托管量,您的磁盘配额是多少? 部分取决于应用程序自己在做什么,其中一个可能会因为达到磁盘配额而引发错误,如果这个配额被设置得过高,这是一个痛苦。 如果配额非常高,请尝试降低配额,您可以以管理员身份执行配额。