我在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()
答案 0 :(得分:3)
在您创建临时文件时,在调用_
时,os.close(_)
可能没有相同的值。尝试分配给命名变量而不是_
。
如果您能提供一个非常小的代码片段来证明错误,那么对我们和我们有帮助。
答案 1 :(得分:2)
为什么不将tempfile.NamedTemporaryFile与delete=False
一起使用?这允许您使用python文件对象,这是一个奖励。此外,它可以用作上下文管理器(应该处理所有细节,确保文件正确关闭):
with tempfile.NamedTemporaryFile('w',prefix=section,dir=indir,delete=False) as f:
pass #Do something with the file here.