Временное решение OSError с os.listdir

У меня есть каталог с 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.

11
задан Jason Sundram 4 November 2010 в 18:00
поделиться