如何更快地遍历大量文件夹

My_Path我必须遍历给定路径( )(大约 60 000)处的大量文件夹。然后在每个文件夹中My_Path,我必须检查文件名是否包含某个日期。我想知道是否有比使用os库一个一个循环更快的方法。(约 1 小时)


My_Path:

-   Folder 1

              o File 1

              o File 2

              o File 3

              o …

-   Folder 2

-   Folder 3

-   …

-   Folder 60 000

import os

My_Path = r'\\...\...\...\...'

mylist2 = os.listdir(path)  # give a list of 60000 element

for folder in mylist2:

    mylist = os.listdir(My_Path + folder)  # give the list of all files in each folder

    for file in mylist:

        Check_Function(file)

实际运行大约需要一个小时,我想知道是否有最佳解决方案。


料青山看我应如是
浏览 179回答 2
2回答

慕码人8056858

尝试os.walk(),可能会更快:import osMy_Path = r'\\...\...\...\...'for path, dirs, files in os.walk(My_Path):     for file in files:        Check_Function(os.path.join(path, file))如果不是,也许是你Check_Function吃光了周期。

GCT1015

正如其他人已经建议的那样,您可以在此答案lst中获取所有文件的列表。然后你可以用多处理来旋转你的函数。import multiprocessing as mpdef parallelize(fun, vec, cores):    with mp.Pool(cores) as p:        res = p.map(fun, vec)    return res并运行res = parallelize(Check_Function, lst, mp.cpu_count()-1)更新 鉴于我认为不受Check_Functioncpu 限制,您可以使用更多内核。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python