Как закрыть файлы из tempfile.mkstemp?
На моей машине Linux машина ulimit -n
дает 1024
. Этот код:
from tempfile import mkstemp for n in xrange(1024 + 1): f, path = mkstemp()
сбой в последнем линейном цикле:
- Ограничить использование памяти?
- Python: ulimit и nice для subprocess.call / subprocess.Popen?
- Предел установленного размера резидента (RSS) не влияет
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
Кажется, что я открыл для многих файлов, но type
f
и path
– просто int
и str
поэтому я не уверен, как закрыть каждый файл, который я открыл. Как закрыть файлы из tempfile.mkstemp?
3 Solutions collect form web for “Как закрыть файлы из tempfile.mkstemp?”
import tempfile import os for idx in xrange(1024 + 1): outfd, outsock_path = tempfile.mkstemp() outsock = os.fdopen(outfd,'w') outsock.close()
Поскольку 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)
Используйте os.close()
чтобы закрыть дескриптор файла:
import os from tempfile import mkstemp # Open a file fd, path = mkstemp() # Close opened file os.close( fd )