python 通配符用法,python - 通配符

本文详细介绍了Python中glob模块的使用,通过实例展示了如何利用通配符*、?和**来匹配文件路径,包括单个字符、数字、大小写字母和特定目录的匹配。重点讲解了在当前目录和子目录下查找文件的操作,以及如何结合实际场景进行文件搜索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通配符:

*: 所有

?: 代表单个字符

.: 当前目录

…:当前目录的上一级目录

[0-9]: 单个字符为0~9

[a-z]:单个字符为a~z

[A-Z]:单个字符为A~Z

[A-Za-z]:A~Z a~z

[0-9A-Za-Z]0~9 A~Z a~z

[[:digit:]]

[[:upper:]]

[[:lower:]]

[[:space:]]

glob官方解读

>>> import glob

>>> glob.glob('./[0-9].*')

['./1.gif', './2.txt']

>>> glob.glob('*.gif')

['1.gif', 'card.gif']

>>> glob.glob('?.gif')

['1.gif']

>>> glob.glob('**/*.txt', recursive=True)

['2.txt', 'sub/3.txt']

>>> glob.glob('./**/', recursive=True)

['./', './sub/']

>>> import glob

>>> glob.glob('*.gif')

['card.gif']

>>> glob.glob('.c*')

['.card.gif']

举例:

在当前目录下起一个以conf结尾的文档

19cd81a0fb137f4c62b602400cf6d1f9.png

import os

import glob

files1 = [file for file in os.listdir('.') if file.endswith('.conf')]

# 获取当前目录所有以.conf结尾的文件;

files2= glob.glob('./*.conf')

print(files1)

print(files2)

输出:

6c7465bfcc893e8b03c135fa5104ec96.png

### Python通配符的使用方法 在 Python 的字符串匹配和文件名模式匹配中,可以使用简单的通配符来表示不确定的部分。这些通配符主要用于 `fnmatch` 和 `glob` 模块中的函数。 #### 单字符通配符 (?) 问号 `?` 用于匹配任意单个字符。这在不知道确切字符但仍需进行部分匹配的情况下非常有用[^2]。 ```python import fnmatch import os pattern = "file?.txt" files = ["file1.txt", "filea.txt", "file01.txt"] matches = [f for f in files if fnmatch.fnmatch(f, pattern)] print(matches) ``` 这段代码会输出: ``` ['file1.txt', 'filea.txt'] ``` 这里只匹配了那些名字为 `file` 加上一个任意字符再加 `.txt` 结尾的文件。 #### 多字符通配符 (*) 星号 `*` 可以用来匹配零个或多个任意字符。这是最常用的通配符之一,在处理大量具有相似结构但不完全相同的路径或名称时特别方便。 ```python pattern = "*.py" for root, dirs, files in os.walk('.'): for filename in fnmatch.filter(files, pattern): print(os.path.join(root, filename)) ``` 此脚本会在当前目录及其子目录下查找所有的 Python 文件并打印它们的完整路径。 #### 字符集方括号([]) 方括号内的任何单一字符都将被解释为该位置上的有效选项。可以通过这种方式指定一组可能的字符范围或者离散值。 ```python pattern = "[abc].txt" # Matches a.txt, b.txt or c.txt but not d.txt etc. files = ["a.txt", "b.txt", "c.txt", "d.txt"] matches = [f for f in files if fnmatch.fnmatch(f, pattern)] print(matches) ``` 上述例子只会返回列表中符合 `[abc]` 开头加上 `.txt` 后缀的项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值