On my machine Linux machine ulimit -n
gives 1024
. This code:
from tempfile import mkstemp
for n in xrange(1024 + 1):
f, path = mkstemp()
fails at the last line loop with:
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
It seems like I've opened to many files - but the type
of f
and path
are simply int
and str
so I'm not sure how to close each file that I've opened. How do I close the files from tempfile.mkstemp?
Since
mkstemp()
returns a raw file descriptor, you can use os.close():Use
os.close()
to close the file descriptor: