首页 > 编程语言 >Python(glob()、rglob())

Python(glob()、rglob())

时间:2024-07-11 09:32:50浏览次数:16  
标签:Python glob rglob Path txt example dir

目录

在 Python 中,rglob()glob() 都是 pathlib.Path 类的方法,用于匹配指定模式的文件或目录。它们的主要区别在于是否递归地搜索子目录。


rglob() 方法

  • 全称:递归全局匹配(recursive global match)。
  • 用途:递归地遍历目录及其所有子目录,并匹配给定的模式。
  • 语法
    Path.rglob(pattern)
    
  • 参数
    • pattern:要匹配的模式,可以使用通配符(如 *?** 等)。
  • 返回值:生成器,生成与模式匹配的 Path 对象。

glob() 方法

  • 全称:全局匹配(global match)。
  • 用途:在当前目录中匹配给定的模式,不递归搜索子目录。
  • 语法
    Path.glob(pattern)
    
  • 参数
    • pattern:要匹配的模式,可以使用通配符(如 *? 等)。
  • 返回值:生成器,生成与模式匹配的 Path 对象。

具体区别

递归搜索

  • rglob():会递归搜索当前目录及其所有子目录。
  • glob():仅在当前目录中搜索,不会递归进入子目录。

示例

假设有如下目录结构:

/example_dir/
├── file1.txt
├── file2.txt
├── subdir1/
│   ├── file3.txt
│   └── file4.py
└── subdir2/
    ├── file5.py
    └── subsubdir/
        └── file6.txt

使用 rglob() 递归搜索所有 .txt 文件

from pathlib import Path

p = Path('/example_dir')

# 使用 rglob() 方法查找所有的 .txt 文件
for txt_file in p.rglob('*.txt'):
    print(txt_file)

# 输出:
# /example_dir/file1.txt
# /example_dir/file2.txt
# /example_dir/subdir1/file3.txt
# /example_dir/subdir2/subsubdir/file6.txt

使用 glob() 仅在当前目录搜索 .txt 文件

from pathlib import Path

p = Path('/example_dir')

# 使用 glob() 方法查找所有的 .txt 文件
for txt_file in p.glob('*.txt'):
    print(txt_file)

# 输出:
# /example_dir/file1.txt
# /example_dir/file2.txt

在当前目录和子目录中搜索 .txt 文件(通过 glob** 组合)

from pathlib import Path

p = Path('/example_dir')

# 使用 glob() 方法结合 '**' 模式查找所有的 .txt 文件
for txt_file in p.glob('**/*.txt'):
    print(txt_file)

# 输出:
# /example_dir/file1.txt
# /example_dir/file2.txt
# /example_dir/subdir1/file3.txt
# /example_dir/subdir2/subsubdir/file6.txt

总结

  • rglob():用于递归搜索,包括当前目录及其所有子目录。适合需要全面扫描目录树的情况。
  • glob():仅在当前目录中搜索,不递归。适合只需要在当前目录中查找的情况。

这两个方法可以根据具体需求选择使用,灵活地处理文件和目录的匹配任务。

标签:Python,glob,rglob,Path,txt,example,dir
From: https://www.cnblogs.com/keye/p/18295400

相关文章

  • [1028] Creating your very own Python library
    Ah,creatingyourveryownPythonlibrary—howexciting!......
  • 推荐一款Python接口自动化测试数据提取分析神器!
    1、引言在处理JSON数据时,我们常常需要提取、筛选或者变换数据。手动编写这些操作的代码不仅繁琐,而且容易出错。Python作为一个功能强大的编程语言,拥有丰富的库和工具来处理这些数据。今天,将介绍一个实用的Python库——JMESPath,它为提取JSON数据提供了简洁而强大的语法。2、JMESP......
  • 基于Python实现校园影院平台系统[源码+LW+部署讲解视频]
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • python urllib 基础 get ajax
    get请求豆瓣电影下载importurllib.parseimporturllib.requestimportjson#url='https://movie.douban.com/j/chart/top_list?type=19&interval_id=100%3A90&action=&start='+page+'&limit=20'headers={"User-Agent"......
  • Ollama完整教程:本地LLM管理、WebUI对话、Python/Java客户端API应用
    老牛同学在前面有关大模型应用的文章中,多次使用了Ollama来管理和部署本地大模型(包括:Qwen2、Llama3、Phi3、Gemma2等),但对Ollama这个非常方便管理本地大模型的软件的介绍却很少。目前,清华和智谱AI联合发布开源的GLM4-9B大模型也能支持Ollama进行本地部署了(本地部署GLM-4-9B清华......
  • Python爬虫(1-4)-基本概念、六个读取方法、下载(源代码、图片、视频 )、user-agent反爬
    Python爬虫一、爬虫相关概念介绍1.什么是互联网爬虫如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的数据解释1:通过一个程序,根据URL进行爬取网页,获取有用信息解释2:使用程序模拟浏览器,去向服......
  • Python学习笔记(一)(更新中)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档Python基础语法(一)一、变量1、变量命名的规则2、变量的常见类型二、注释提示:以下是本篇文章正文内容,下面案例可供参考一、变量变量是指存储信息的容器。变量的赋值包括变量名、等号、存储的信息这......
  • python原型链污染
    python原型链污染原型链污染python中,对象的属性和方法可以通过原型链来继承和获取每一个对象都有一个原型,定义了其可以访问的属性和方法,所以可以通过修改原型链中的属性来利用漏洞攻击当对象访问属性或方法时,会先对自身进行查找,找不到就一次往上级查找只能污染类的属性,不能......
  • Python潮流周刊的优惠券和精美电子书(EPUB、PDF、Markdown)
    Python潮流周刊从2023.05.13连载至今,本周即将发布第60期,这意味着我们又要达成一个小小的里程碑啦!每周坚持做分享,周复一周,这对自己的精力和意志是一项不小的挑战。于是,为了让自己获得一些仪式感,我给自己定了一个较为合理的时间目标,就是每30期周刊作为一季。划分出“每一季......
  • Python 数组类型转树形结构
    今天突然想用到这个功能 结果百度到的 基本是写乱糟糟的一堆代码 无奈只好亲自操刀话不多说,先上代码:classTools:@staticmethoddeflist_to_tree(data,pid=0):children=[itemforitemindataifitem['pid']==pid]forchildinchi......