python 遍历文件夹中的文件名
时间: 2023-10-23 09:31:55 浏览: 342
在 Python 中遍历文件夹中的文件名可以使用 `os` 模块。具体步骤如下:
1. 首先导入 `os` 模块:`import os`
2. 指定要遍历的文件夹路径:`folder_path = '/path/to/folder'`
3. 使用 `os.listdir()` 函数获取该文件夹下所有文件和文件夹的名称列表:`file_list = os.listdir(folder_path)`
4. 遍历 `file_list` 列表,判断每个元素是否是文件,如果是文件,则打印出文件名:
```
for file_name in file_list:
file_path = os.path.join(folder_path, file_name)
if os.path.isfile(file_path):
print(file_name)
```
完整的代码如下:
```python
import os
folder_path = '/path/to/folder'
file_list = os.listdir(folder_path)
for file_name in file_list:
file_path = os.path.join(folder_path, file_name)
if os.path.isfile(file_path):
print(file_name)
```
这样就可以遍历并打印出指定文件夹中的所有文件名了。
相关问题
python遍历文件夹下文件名
<think>嗯,用户想了解如何在Python中遍历文件夹下的文件名。我应该先回忆一下有哪些库可以用。对了,os模块和pathlib应该都是常用的方法。首先,可能需要解释一下os.listdir和os.walk的区别。用户可能只需要当前目录下的文件,或者需要递归遍历子文件夹。要分情况说明。
然后,可能需要提到glob模块,因为它支持通配符匹配,比如*.txt。这也是常见的需求。用户可能对不同的方法不太熟悉,所以需要一步步来,给出示例代码。
另外,pathlib是Python3.4以后引入的,面向对象的处理路径的方式,可能更现代一些。虽然用户可能习惯用os,但pathlib更简洁,值得推荐。
需要注意不同操作系统下的路径分隔符问题,比如Windows用反斜杠,而Linux/macOS用正斜杠。Python的os模块能处理这些,但示例中最好用os.path.join或者raw字符串来避免问题。
用户可能遇到的常见问题,比如如何过滤文件而不是目录,或者如何获取绝对路径。这些可能需要提及。例如,在os.listdir中结合os.path.isfile来判断是否是文件,或者在os.walk时处理每个entry的类型。
还要考虑代码的简洁性。比如,使用列表推导式可以让代码更简短。但也要注意可读性,尤其是对新手来说。
可能需要给出不同方法的优缺点。比如os.listdir简单,但只能处理当前目录;os.walk可以递归,但可能需要更多的循环处理;glob支持模式匹配,但递归需要**/语法,且在旧版本中可能有限制。
最后,是否需要提到性能问题?可能对于大多数情况来说,这些方法已经足够高效,除非处理非常大的目录结构。所以可能不需要深入,除非用户有特别需求。
总结一下,回答的结构应该是先介绍不同的方法,然后给出每种方法的示例代码,并说明适用场景。最后可能给出一些注意事项,比如隐藏文件、权限问题等。确保用户能够根据需求选择合适的方法。</think>在 Python 中遍历文件夹下的文件名,常用的方法有以下几种,适用于不同场景:
---
### **方法 1:使用 `os.listdir`(单层目录)**
```python
import os
folder_path = "你的文件夹路径"
file_names = os.listdir(folder_path)
for name in file_names:
full_path = os.path.join(folder_path, name) # 拼接完整路径
if os.path.isfile(full_path): # 过滤出文件(跳过子文件夹)
print("文件名:", name)
```
---
### **方法 2:使用 `os.walk`(递归遍历所有子目录)**
```python
import os
folder_path = "你的文件夹路径"
for root, dirs, files in os.walk(folder_path):
# root: 当前目录
# dirs: 当前目录下的子文件夹列表
# files: 当前目录下的文件列表
for file_name in files:
full_path = os.path.join(root, file_name) # 文件完整路径
print("文件名:", file_name)
print("完整路径:", full_path)
```
---
### **方法 3:使用 `glob` 模块(支持通配符)**
```python
import glob
# 匹配当前目录下的所有文件
files = glob.glob("你的文件夹路径/*")
# 递归匹配所有子目录中的 .txt 文件
all_txt = glob.glob("你的文件夹路径/**/*.txt", recursive=True)
for file_path in files:
print("文件名:", os.path.basename(file_path))
print("完整路径:", file_path)
```
---
### **方法 4:使用 `pathlib`(面向对象,推荐)**
```python
from pathlib import Path
folder = Path("你的文件夹路径")
# 遍历当前目录下的文件
for file in folder.iterdir():
if file.is_file():
print("文件名:", file.name)
# 递归遍历所有子目录中的文件
for file in folder.rglob("*"):
if file.is_file():
print("文件名:", file.name)
```
---
### **常见需求扩展**
1. **过滤特定类型文件**:
在 `glob` 中使用 `*.jpg`,或在 `pathlib` 中判断 `file.suffix == ".jpg"`。
2. **获取相对路径**:
使用 `os.path.relpath(full_path, start_path)` 或 `pathlib.Path.relative_to()`。
3. **忽略隐藏文件**:
添加条件 `if not name.startswith('.')`(Linux/macOS 隐藏文件以 `.` 开头)。
---
选择方法:
- 简单单层遍历 → `os.listdir` 或 `pathlib.Path.iterdir`
- 递归遍历子目录 → `os.walk` 或 `pathlib.Path.rglob`
- 通配符匹配 → `glob`
python遍历文件夹删除文件名中含有特定字符的文件
你可以使用 `os` 和 `os.path` 模块来遍历文件夹,并使用 `os.remove` 删除文件。以下是一个示例代码,它将遍历当前目录及其子目录中的所有文件,并删除文件名中包含特定字符串的文件:
```python
import os
# 要删除的字符串
target_string = "delete_me"
# 遍历文件夹
for root, dirs, files in os.walk("."):
for file in files:
# 检查文件名是否包含目标字符串
if target_string in file:
# 构造要删除的文件的路径
path = os.path.join(root, file)
# 删除文件
os.remove(path)
```
请注意,这个示例代码将删除所有包含目标字符串的文件,包括文件扩展名也包含目标字符串的文件。如果你只想删除文件名包含目标字符串但不包括扩展名的文件,可以使用 `os.path.splitext` 函数来分离文件名和扩展名,然后检查文件名是否包含目标字符串:
```python
import os
# 要删除的字符串
target_string = "delete_me"
# 遍历文件夹
for root, dirs, files in os.walk("."):
for file in files:
# 分离文件名和扩展名
name, ext = os.path.splitext(file)
# 检查文件名是否包含目标字符串
if target_string in name:
# 构造要删除的文件的路径
path = os.path.join(root, file)
# 删除文件
os.remove(path)
```
请记得在使用这些代码之前备份你的文件。
阅读全文
相关推荐











