glob模块的使用

 

 

当我们要在一个文件夹及其子文件夹里面寻找特定类型的文件,我们可能会这样写代码:

  • 没有子文件夹时

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))

print(py_files)
复制代码

 

如果当前文件夹的结构如下所示:

复制代码
.

├── 1.py

├── 2.py

├── sub

│   ├── 3.py

│   ├── subsub1

│   │   └── 4.py

│   └── subsub2

│   └── 5.py

└── test.py
复制代码

 

那么运行结果如下图所示:

 

 

虽然确实满足要求了,但是代码还是有点复杂,而是嵌套三层缩进,代码不够美观。

实际上,要解决遍历文件的问题,只需要使用 Python 自带的 glob模块即可:

import glob

 

result = glob.glob('**/*.py', recursive=True)

print(result)

在使用 glob模块时,第一个参数指定目标文件的文件名格式,这里可以使用 Linux 中的通配符。如果文件名写为 *.py,那么就是当前文件夹下面的所有 .py文件。

如果文件名写为 **/*.py,那么就是当前第一层子文件夹下面的所有 .py文件。

如果文件名写为 **/*.py,并且增加参数 recursive=True,那么就是递归搜索当前文件夹和所有子文件夹。

运行效果如下图所示:

 

 

非常简单就实现了遍历文件夹查找文件的操作。

 

转自:微信公众号:未闻code

posted @   阿布_alone  阅读(365)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
历史上的今天:
2018-12-06 MySQL完整性约束
2018-12-06 MySQL基础数据类型
2018-12-06 mysql 存储引擎介绍
2018-12-06 day36 mysql 表的具体操作
TOP
点击右上角即可分享
微信分享提示