在我的机器上,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 中的文件?
最佳答案
由于 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)
关于python - 如何关闭 tempfile.mkstemp 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9944135/