摄影:产品经理
厨师:产品经理
当咱们要在一个文件夹及其子文件夹里面寻找特定类型的文件,咱们可能会这样写代码:app
import os all_file = os.listdir('target_folder') target_file = [x for x in all_file if x.endswith('.py')]
import os
py_files = []
for root, folder, files in os.walk('.'):
for file in files:
if file.endswith('.py'):
py_files.append(os.path.join(root, file))ide
print(py_files)code
若是当前文件夹的结构以下所示:
.
├── 1.py
├── 2.py
├── sub
│ ├── 3.py
│ ├── subsub1
│ │ └── 4.py
│ └── subsub2
│ └── 5.py
└── test.pyblog
那么运行结果以下图所示:  虽然确实知足要求了,可是代码仍是有点复杂,而是嵌套三层缩进,代码不够美观。 实际上,要解决遍历文件的问题,只须要使用 Python 自带的 glob模块便可:
import glob递归
result = glob.glob('*/.py', recursive=True)
print(result)get
在使用 glob模块时,第一个参数指定目标文件的文件名格式,这里能够使用 Linux 中的通配符。若是文件名写为 *.py,那么就是当前文件夹下面的全部 .py文件。 若是文件名写为 **/*.py,那么就是当前第一层子文件夹下面的全部 .py文件。 若是文件名写为 **/*.py,而且增长参数 recursive=True,那么就是递归搜索当前文件夹和全部子文件夹。 运行效果以下图所示:  很是简单就实现了遍历文件夹查找文件的操做。