Glob 语法及解析
阅读原文时间:2023年07月09日阅读:3

Glob 语法及解析

  • 1. glob 简介
  • 2. glob 语法
  • 3. .gitignore
  • 4. Python glob

glob 是用于匹配符合指定模式的文件集合的一种语言, 类似于正则表达式, 但更加简单。

Update-09-22: 前两天阮一峰老师更新了他的博客,内容讲的就是 Glob, 强烈推荐。

  • 命令行通配符教程 - 阮一峰

glob 的语法很简单:

通配符

描述

例子

匹配

不匹配

*

匹配任意数量的任何字符,包括无

Law*

Law, Laws, Lawyer

GrokLaw, La, aw

?

匹配任何 单个 字符

?at

Cat, cat, Bat, bat

at

[abc]

匹配括号中给出的一个字符

[CB]at

Cat, Bat

cat, bat

[a-z]

匹配括号中给出的范围中的一个字符

Letter[0-9]

Letter0, Letter1Letter9

Letters, Letter, Letter10

[!abc]

匹配括号中未给出的一个字符

[!C]at

Bat, bat, cat

Cat

[!a-z]

匹配不在括号内给定范围内的一个字符

Letter[!3-5]

Letter1

Letter3Letter5, Letterxx

Update-2018-07-18: 使用 **/* 可以匹配当前目录树中的所有文件, 通过 **/*.py 匹配所有后缀名为 .py 的文件

Update-2018-09-20: 好像只是 Pythonpathlib.Path.glob 支持列出所有文件,其他工具只是列出当前所有子目录中匹配的文件,子目录的子目录需要 **/**/*.

git.gitignore 文件可以使用 glob 模式匹配, 另外还有一些规则:

  • 所有空行或者以 # 开头的行都会被 Git 忽略
  • 匹配模式可以以 / 开头防止递归
  • 匹配模式可以以 / 结尾指定目录
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号 ! 取反

Python 有进行 glob 匹配的标准库, 使用也很简单:

# -*- coding: utf-8 -*-
import glob

glob 只有两个函数, 功能差不多, 只不过一个返回列表, 一个返回迭代器

glob.glob('*.org') # 返回所有后缀名为 .org 的文件

glob.iglob('*/') # 返回匹配所有目录的迭代器

标准库 globPython2Python3 中是相同的。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章