Trên máy tính Linux của tôi ulimit -n
cho 1024
. Mã này:Làm cách nào để đóng các tệp từ tempfile.mkstemp?
from tempfile import mkstemp
for n in xrange(1024 + 1):
f, path = mkstemp()
thất bại tại vòng lặp dòng cuối cùng với:
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
Nó có vẻ như tôi đã mở nhiều file - nhưng type
của f
và path
chỉ đơn giản là int
và str
vì vậy tôi 'không chắc chắn làm thế nào để đóng mỗi tập tin mà tôi đã mở. Làm cách nào để đóng các tệp từ tempfile.mkstemp?
Chỉ cần để giải thích một chút. mkstemp() trả về một bộ mô tả tập tin unix, vì vậy bạn làm việc với nó, bạn cần mở nó bằng fdopen hoặc sử dụng hàm đóng os: os.close() – turtlebender
Cảm ơn, @turtlebender. – unutbu