IOError: Слишком много открытых файлов:

У меня огромный файл, который я пишу примерно в 450 файлов. Я получаю ошибку, так как too many files open . Я искал в Интернете и нашел какое-то решение, но это не помогает.

 import resource resource.setrlimit(resource.RLIMIT_NOFILE, (1000,-1)) >>> len(pureResponseNames) #Filenames 434 >>> resource.getrlimit(resource.RLIMIT_NOFILE) (1000, 9223372036854775807) >>> output_files = [open(os.path.join(outpathDirTest, fname) + ".txt", "w") for fname in pureResponseNames] Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 24] Too many open files: 'icd9_737.txt' >>> 

Я также изменил ulimit из командной строки, как показано ниже:

 $ ulimit -n 1200 $ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 1200 pipe size (512 bytes, -p) 1 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 709 virtual memory (kbytes, -v) unlimited $ 

Я все еще получаю ту же ошибку. PS: Я также перезапустил свою систему и запустил программу, но без успеха.

3 Solutions collect form web for “IOError: Слишком много открытых файлов:”

Ошибки «Слишком много открытых файлов» всегда сложны – вам нужно не только обходиться с помощью ulimit , но также нужно проверять ограничения системы и особенности OSX. Это сообщение SO предоставляет дополнительную информацию об открытых файлах в OSX. (Предупреждение о спойлере: по умолчанию 256).

Однако часто бывает легко ограничить количество файлов, которые должны быть открыты одновременно. Если мы посмотрим на пример Стефана Боллмана, мы можем легко изменить это на:

 pureResponseNames = ['f'+str(i) for i in range(434)] outpathDirTest="testCase/" output_files = [os.path.join(outpathDirTest, fname) + ".txt" for fname in pureResponseNames] for filename in range(output_files): with open(filename, 'w') as f: f.write('This is a test of file nr.'+str(i)) 

Минимальный рабочий пример будет приятным. Я получил те же результаты, что и ron.rothman, используя следующий скрипт с Python 3.3.2, GCC 4.2.1 на mac 10.6.8. Вы получаете ошибки, используя это?

  import os, sys import resource resource.setrlimit(resource.RLIMIT_NOFILE, (1000,-1)) pureResponseNames = ['f'+str(i) for i in range(434)] try: os.mkdir("testCase") except: print('Maybe the folder is already there.') outpathDirTest="testCase/" output_files = [open(os.path.join(outpathDirTest, fname) + ".txt", "w") for fname in pureResponseNames] for i in range(len(output_files)): output_files[i].write('This is a test of file nr.'+str(i)) output_files[i].close() 

Вы должны попробовать $ ulimit -n 50000 вместо 1200

  • OS X Удалить установленный distutils проект
  • Mac OS X Lion Python Ctype Ошибка CDLL lib.so.6: изображение не найдено
  • mac - pip установить ошибку pymssql
  • Непрерывные числа в массиве Objective-C, такие как range () в Python
  • Как установить название программы в python
  • ссылка на аудиолаб в python2.6 на osx
  • Копировать данные таблицы из одной базы данных в другую
  • Поиск динамического символа не выполняется с помощью статически встроенного Python в Mac OS X
  • Python - лучший язык программирования в мире.