Na mojej maszynie maszyna Linux ulimit -n
podaje 1024
. Ten kod:Jak zamknąć pliki z tempfile.mkstemp?
from tempfile import mkstemp
for n in xrange(1024 + 1):
f, path = mkstemp()
nie w ostatniej pętli linii z:
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
Wydaje się jakbym otworzyła wielu plików - ale type
od f
i path
są po prostu int
i str
więc nie jestem pewien, jak zamknąć każdy otwarty plik. Jak zamknąć pliki z tempfile.mkstemp?
Wystarczy, aby wyjaśnić co nieco. mkstemp() zwraca deskryptor pliku unix, abyś mógł z nim pracować, musisz go otworzyć za pomocą fdopen lub użyć funkcji zamykającej os: os.close() – turtlebender
Dzięki, @turtlebender. – unutbu