题
我有一个应用程序Python编写这就是写作的大量数据 %TEMP%
文件夹。奇怪的是,每一次和一段时间,它死了,回来 IOError: [Errno 28] No space left on device
.驱动器 很多 自由空间, %TEMP%
不是它自己的分区,我是个管理员,并且该系统没有配额。
不Windows人为地把某些类型的限制的数据 %TEMP%
?如果不是,任何想法,可能是什么造成这一问题?
编辑:以下讨论下面,我澄清的问题,以更好地解释什么。
解决方案
什么是确切的错误您遇到?
在GetTempFileName方法将提高 如果它是用来一个IOException 创建多个的 65535 强>文件,而不 删除先前的临时文件。
在GetTempFileName方法将提高 一个IOException如果没有独特的临时 文件名是可用的。解决 这个错误,删除所有不必要的 临时文件。
有一点需要注意的是,如果你是间接地使用Win32 API,而你只用它来获取临时文件名,请注意,尽管(间接)调用它:
<强>创建强>唯一命名的,的零字节 在磁盘上的临时文件并返回 该文件的完整路径。
如果您使用的路径,而且也改变返回值,要知道,你实际上可能会创建一个0byte文件,并在此基础之上的附加文件(例如My_App_tmpXXXX.tmp和tmpXXXX.tmp)。
由于内斯特以下建议,考虑删除您的临时文件你使用它们完成后。
其他提示
使用FAT32文件系统我可以想象一下这种情况发生时:
- 写的很多数据的一个文件,和你到达4G文件大小帽子。
- 或者当你们创造了很多小型的文件和达到2^16-2的文件目录盖。
除了这个,我不知道的任何限制的系统可以对临时文件夹,除了phyiscal分区实际上正在满。
另一个局限是,作为迈克Atlas系统的建议 GetTempFileName()
功能创造的文件的类型 tmpXXXX.tmp
.虽然你可能不会直接使用时,验证 %TEMP%
文件夹中不包含太多的人(2^16条)。
也许显而易见的,你有没有尝试过清空%TEMP文件夹之前的运行工具?
有不应该在温度这样的空间的限制。如果你写的应用程序,我会建议在ProgramData创建文件...
不应该有任何麻烦关于您的%TEMP%目录。
什么是你的磁盘配额设置为%TEMP%的托管量?这部分地取决于所达成什么自己在做什么,他们中的一个可能会引发错误是由于磁盘配额的应用程序,这是一个痛苦,如果此配额设置太高。如果配额是非常高的,尝试降低它,您可以为管理员做的。