我读到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循环迭代吗?