2015-09-03 3 views
1

os.scandir претензии быть лучше каталог итератора и быстрее, чем os.walk(). Он стал частью stdlib для Python3. Работа в производственной среде, какие вещи, которые следует учитывать при переходе от os.walk() к os.scandir()Python - os.walk() против os.scandir()

+1

Вы можете просто установить 3.5 и использовать 'walk', который будет использовать 'scandir', если я правильно помню. – TigerhawkT3

+1

Но что, когда вы используете любую 2 версию (2.7) и хотите использовать os.scandir? – user1767754

ответ

1

I когда-то использовали os.scandir() в Python 2.7. Он продолжал сбой из-за странных символов юникода. (ù ỳ ǹ и тому подобное). Переключился обратно на os.walk(), и все было в порядке. Я бы предложил вам проверить это, если это вызывает беспокойство.

Appart от этого действительно быстрее, особенно на Windows.

-1

Я не очень хорошо знаком с Python, но недавно мне нужно написать скрипт Python 2.x, который использует os.walk() для перечисления большого количества файлов. И в конце я написал список фиктивных файлов на C#. Код:

string dirPath = @"d:\"; 
DirectoryInfo di = new DirectoryInfo (dirPath) 
var fi = di.EnumerateFiles ("*", SearchOption.AllDirectories); 

запустить фиктивный перечислите и питон становится быстрее :) Примечание: Эта функция доступна только в .NET 4.0 и выше

Смежные вопросы