os.walk()vs os.scandir()

时间:2015-09-03 23:35:30

标签: python os.walk

os.scandir 声称是一个更好的目录迭代器,然后比 os.walk()更快。它成为了Python3的stdlib的一部分。在生产环境中工作,从 os.walk()转移到 os.scandir()

时需要考虑的事项

2 个答案:

答案 0 :(得分:1)

我曾经在Python 2.7中使用过os.scandir()。由于奇怪的unicode字符,它一直在崩溃。 (ù ỳ ǹ等等)。切换回os.walk(),一切都很好。如果这是一个问题,我建议你测试一下。

来自它的公寓真的更快,特别是在Windows上。

答案 1 :(得分:-1)

我对Python不太熟悉,但最近我必须编写一些Python 2.x脚本,使用os.walk()来枚举大量文件。最后我在C#上编写了虚拟文件枚举。 代码:

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

运行虚拟枚举,python变得更快:) 注意:这仅适用于.NET 4.0及更高版本