在我的机器Linux机器上,ulimit -n
提供了1024
。这段代码:
from tempfile import mkstemp
for n in xrange(1024 + 1):
f, path = mkstemp()
在最后一行循环中失败,出现以下错误:
Traceback (most recent call last):
File "utest.py", line 4, in <module>
File "/usr/lib/python2.7/tempfile.py", line 300, in mkstemp
File "/usr/lib/python2.7/tempfile.py", line 235, in _mkstemp_inner
OSError: [Errno 24] Too many open files: '/tmp/tmpc5W3CF'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
ImportError: No module named fileutils
看起来我打开了很多文件--但是f
和path
的type
仅仅是int
和str
,所以我不知道如何关闭我打开的每个文件。如何关闭tempfile.mkstemp中的文件?
发布于 2012-03-30 21:47:03
import tempfile
import os
for idx in xrange(1024 + 1):
outfd, outsock_path = tempfile.mkstemp()
outsock = os.fdopen(outfd,'w')
outsock.close()
发布于 2012-03-30 21:48:00
由于mkstemp()
返回原始文件描述符,因此可以使用os.close()
import os
from tempfile import mkstemp
for n in xrange(1024 + 1):
f, path = mkstemp()
# Do something with 'f'...
os.close(f)
发布于 2012-03-30 21:48:54
使用os.close()
关闭文件描述符:
import os
from tempfile import mkstemp
# Open a file
fd, path = mkstemp()
# Close opened file
os.close( fd )
https://stackoverflow.com/questions/9944135
复制相似问题