在没有循环的情况下获取scandir的DirEntry对象生成器的名称属性

时间:2016-12-19 22:04:52

标签: python optimization scandir listdir

我读到scandir是listdir的改进版本,并希望用它以最有效的方式传递可能较大的目录内容列表。

与listdir不同,它直接提供文件和文件夹的名称,scandir输出DirEntry对象生成器 -

from scandir import scandir
from os import listdir

path='C:/'

listdir(path)                    # outputs ['$Recycle.Bin',  .. , 'Windows']
list(scandir(path))              # outputs [<DirEntry '$Recycle.Bin'>,..   ]

要使用scandir获取名称,我目前使用:

list(names.name for names in scandir(path))   #outputs ['$Recycle.Bin', .. ] 

并在合适的函数中解压缩名称,这就是我想要的,我传递

*(names.name for names in scandir(path))

作为相应的函数参数,而使用listdir我可以传递

*listdir(path)

作为论据。

scandir的用法是否有效?我可以以某种方式直接提取名称,而不用for循环迭代吗?

0 个答案:

没有答案