在python中以递归方式清理文件的方式为glob

时间:2018-02-28 04:48:32

标签: python python-3.x python-3.6

给出以下目录结构:

myDir
   file1.c
   file2.c
   subDirA
      file3.c
   subDirB
      file4.c

我想找到带有glob的*.c个文件,或者另一个同样有效的方法(不使用其他地方记录的os.walk方法)。

我遇到的问题是,给定路径myDir我无法在一行代码中递归获取所有c个文件。

glob.glob('myDir/*.c', recursive=True) 

只会产生file1file2。并且

glob.glob('myDir/**/*.c', recursive=True

只会产生file3file4

有没有一种很好的方法将这两个语句合并为一个?肯定会有。

1 个答案:

答案 0 :(得分:3)

使用pathlib

from pathlib import Path
Path('/to/myDir').glob('**/*.c')

至于为什么glob不适合你:

glob.glob('myDir/**/*.c', recursive=True)
             ^
             |___ you had a lower d here?

确保您在myDir的父级内运行它,并且您的Python版本是3.5+。