【python获取文件夹下所有文件名】在日常的编程工作中,经常需要对文件夹中的文件进行批量处理或信息统计。使用 Python 获取文件夹下的所有文件名是一个非常常见且实用的操作。本文将总结几种常用的方法,并通过表格形式展示不同方法的特点与适用场景。
一、常用方法总结
方法名称 | 使用模块 | 是否包含子目录 | 是否返回文件路径 | 是否支持过滤 | 说明 |
`os.listdir()` | os | 否 | 是 | 否 | 简单直接,但不递归 |
`os.walk()` | os | 是 | 是 | 是 | 支持遍历子目录,适合复杂结构 |
`glob.glob()` | glob | 否 | 是 | 是 | 支持通配符匹配,适合筛选文件 |
`pathlib.Path.iterdir()` | pathlib | 否 | 是 | 否 | 面向对象,代码更简洁 |
`pathlib.Path.rglob()` | pathlib | 是 | 是 | 是 | 类似 `os.walk()`,但更简洁 |
二、具体实现示例
1. 使用 `os.listdir()`
```python
import os
folder_path = 'your_folder_path'
files = os.listdir(folder_path)
print(files)
```
- 特点:简单快速,但只获取当前目录下的文件和文件夹。
- 适用场景:仅需获取当前目录下的文件名。
2. 使用 `os.walk()`
```python
import os
folder_path = 'your_folder_path'
for root, dirs, files in os.walk(folder_path):
for file in files:
print(os.path.join(root, file))
```
- 特点:递归遍历文件夹,可以获取所有子目录下的文件。
- 适用场景:需要获取整个目录树下的所有文件。
3. 使用 `glob.glob()`
```python
import glob
folder_path = 'your_folder_path/.txt' 只获取 .txt 文件
files = glob.glob(folder_path)
print(files)
```
- 特点:支持通配符(如 ``, `?`),可按类型筛选文件。
- 适用场景:按扩展名或其他规则筛选文件。
4. 使用 `pathlib.Path.iterdir()`
```python
from pathlib import Path
folder_path = Path('your_folder_path')
for file in folder_path.iterdir():
print(file.name)
```
- 特点:面向对象设计,语法简洁易读。
- 适用场景:代码风格偏向现代 Python 编程。
5. 使用 `pathlib.Path.rglob()`
```python
from pathlib import Path
folder_path = Path('your_folder_path')
for file in folder_path.rglob(''):
if file.is_file():
print(file)
```
- 特点:递归查找,支持过滤条件(如是否为文件)。
- 适用场景:需要递归并过滤文件时使用。
三、总结
在实际开发中,选择哪种方法取决于具体需求:
- 如果只需要获取当前目录下的文件名,推荐使用 `os.listdir()` 或 `Path.iterdir()`。
- 如果需要递归获取所有子目录中的文件,推荐使用 `os.walk()` 或 `Path.rglob()`。
- 如果还需要按特定规则筛选文件,`glob.glob()` 是一个高效的选择。
掌握这些方法,能够显著提升处理文件任务的效率,也为后续的文件操作打下坚实基础。