在不使用嵌套循环的情况下读取文件和文件夹

时间:2018-06-22 03:57:31

标签: python

我有超过100,000个文件分布在多个目录中,现在,我可以使用嵌套的for循环来读取名称和每个文件的路径,

for root, dirs, files in os.walk('python/Lib/email'):
     for file in files:
        # some work here

是否有任何不使用嵌套循环的方法来实现这一目标?读取文件的时间比我们预期的要长

1 个答案:

答案 0 :(得分:1)

如果问题是打开之后的附加循环,则:

import os

for fpath in (os.path.join(root, fname)
              for root, dirs, files
              in os.walk(R"python/Lib/email")
              for fname
              in files):
    pass  # do something with the path

执行时间可以通过多种方式减少,具体取决于您在“某些工作”块中的工作。 如果要进行很多其他文件系统检查,则可以例如将fpath包装在pathlib.Path()中。

我建议使用cProfile模块来找出导致代码速度下降的原因。