У меня есть каталог с 90К файлами. Это такое невероятно огромное количество файлов, что функции bash, такие как ls
, не работают. Так что, конечно же, os. listdir ()
из моего скрипта Python (Mac Python, версия 2.5); он не работает с OSError: [Errno 12] Невозможно выделить память: '.'
Люди скажут: «Не помещайте столько файлов в один каталог! Вы с ума сошли?» - но мне нравится притворяться, что я живу в будущем, в блестящем, сияющем месте, где у меня есть гигабайты памяти, и мне не нужно слишком беспокоиться о том, где именно находятся мои файлы, пока есть На моих вращающихся пластинах осталась ржавчина.
Итак, есть ли хороший способ решения этой проблемы os.listdir ()
? Я думал просто обойтись find
, но это немного грубо, и, к сожалению, find
является рекурсивным, без поддерживаемой опции maxdepth в Mac OS X 10.6.
Вот что такое os. listdir с помощью оболочки для поиска выглядит примерно так:
def ls(directory):
import os
files = os.popen4('find %s' % directory)[1].read().rstrip().split('\n')
files.remove(directory)
return files # probably want to remove dir prefix from everything in here too
Обновление: os.listdir ()
успешно работает в python 2.6.