Python OSError:打开的文件过多

时间:2012-08-31 14:48:44

标签: python windows-xp python-2.7

我在Windows XP上使用Python 2.7。

我的脚本依赖于tempfile.mkstemp和tempfile.mkdtemp来创建大量具有以下模式的文件和目录:

_,_tmp = mkstemp(prefix=section,dir=indir,text=True)

<do something with file>

os.close(_)

运行脚本始终会产生以下错误(尽管确切的行号会发生变化,等等)。脚本尝试打开的实际文件各不相同。

OSError: [Errno 24] Too many open files: 'path\\to\\most\\recent\\attempt\\to\\open\\file'

有关如何调试此问题的任何想法?另外,如果您想了解更多信息,请与我们联系。谢谢!

修改

以下是使用示例:

out = os.fdopen(_,'w')
out.write("Something")
out.close()

with open(_) as p:
    p.read()

2 个答案:

答案 0 :(得分:3)

在您创建临时文件时,在调用_时,os.close(_)可能没有相同的值。尝试分配给命名变量而不是_

如果您能提供一个非常小的代码片段来证明错误,那么对我们和我们有帮助。

答案 1 :(得分:2)

为什么不将tempfile.NamedTemporaryFiledelete=False一起使用?这允许您使用python文件对象,这是一个奖励。此外,它可以用作上下文管理器(应该处理所有细节,确保文件正确关闭):

with tempfile.NamedTemporaryFile('w',prefix=section,dir=indir,delete=False) as f:
     pass #Do something with the file here.