我在AzureML笔记本中有一个目录,其中我有300000个文件,需要列出它们的名字。下面的方法可以工作,但需要1.5h才能执行:
from os import listdir
from os.path import isfile, join
mypath = "./temp/"
docsOnDisk = [f for f in listdir(mypath) if isfile(join(mypath, f))]怎样才能快速列出这些文件?(笔记本和这个目录都在FileShare中)。
我也知道,下面的方法会带来一些好处,但它仍然不是这样做的蔚蓝的方式。
docsOnDisk = [f.name for f in scandir(mypath) ] # shall be 2-20x faster发布于 2022-03-30 14:47:46
尝试使用glob模块和过滤器方法来代替列表理解。
import glob
from os.path import isfile
mypath = "./temp/*"
docsOnDisk = glob.glob(mypath)
verified_docsOnDisk = list(filter(lambda x:isfile(x), docsOnDisk))glob应该只提供现有的文件。不需要使用isfile()来验证它们。但是,如果您需要尝试它,那么您可以使用筛选方法,而不是列表理解。若要跳过验证,可以对最后一行进行注释。
https://stackoverflow.com/questions/71509160
复制相似问题