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