我有一个用Python编写的应用程序将大量的数据写入%TEMP%文件夹。 奇怪的是,每过一段时间,它就会死亡,返回IOError: [Errno 28] No space left on device 。 该驱动器有足够的可用空间, %TEMP%不是自己的分区,我是pipe理员,系统没有配额。
Windows是否在%TEMP%人为设置了某些types的数据限制? 如果没有,有什么可能会导致这个问题的想法?
编辑 :下面的讨论,我澄清了这个问题,以更好地解释发生了什么事情。
Python:os.tmpfile或tempfile.mkstemp
/ tmp与/ dev / shm在Linux上的临时文件存储?
如何防止在Windows临时删除closures文件上打开的内存映射的刷新到磁盘
python tempfile在哪里写文件?
如何在Linux平台上创build一个用C ++编写的临时文件?
%TEMP%和%TMP%是否为运行terminal服务的计算机指定了不同的位置
如何创build一个可以被subprocess读取的临时文件?
你遇到什么确切的错误?
你是否创建了太多的临时文件 ?
如果GetTempFileName方法用于创建超过65535个文件而不删除以前的临时文件,则会引发IOException。
如果没有唯一的临时文件名可用,则GetTempFileName方法将引发IOException。 要解决此错误,请删除所有不需要的临时文件。
有一点需要注意的是,如果您间接使用Win32 API,并且只使用它来获取临时文件名,请注意,在(间接)调用它时:
在磁盘上 创建一个唯一命名的零字节临时文件,并返回该文件的完整路径。
如果你正在使用这个路径,但也改变返回的值,请注意你可能实际上正在创建一个0字节的文件和一个额外的文件(例如My_App_tmpXXXX.tmp和tmpXXXX.tmp)。
或者当你创建大量的小文件,并达到每个目录上限的2 ^ 16-2文件。
除此之外,我不知道系统可能对临时文件夹施加任何限制,除了实际上已经满了分区分区。
另一个限制是Mike Atlas提出了创建类型为tmpXXXX.tmp文件的GetTempFileName()函数。 尽管您可能没有直接使用它,但请验证%TEMP%文件夹中是否包含太多(2 ^ 16)。
也许很明显,你有没有尝试运行实用程序之前清空%TEMP%文件夹?
Temp中不应该有这样的空间限制。 如果你写的应用程序,我会建议在ProgramData中创建您的文件…
关于你的%TEMP%目录应该没有任何问题。
对于%TEMP%的托管量,您的磁盘配额是多少? 部分取决于应用程序自己在做什么,其中一个可能会因为达到磁盘配额而引发错误,如果这个配额被设置得过高,这是一个痛苦。 如果配额非常高,请尝试降低配额,您可以以管理员身份执行配额。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。