Python 遍历文件夹的三种方式
在 Python 中,遍历文件夹可以使用 os
模块和 os.path
模块提供的函数,也可以使用更高级的 pathlib
模块。以下是一些常用方法来遍历文件夹。
使用 os
模块遍历文件夹
遍历文件夹中的文件和子文件夹
使用 os.walk
可以递归遍历文件夹及其子文件夹。
import os
def traverse_directory(directory):
for dirpath, dirnames, filenames in os.walk(directory):
print(f'当前路径: {dirpath}')
print(f'子文件夹: {dirnames}')
print(f'文件: {filenames}')
print('------------------------')
# 使用示例
traverse_directory('path_to_directory')
在这个示例中,os.walk
会生成一个三元组 (dirpath, dirnames, filenames)
。其中,dirpath
是当前目录路径,dirnames
是当前目录下的子目录列表,filenames
是当前目录下的文件列表。
仅遍历某个文件夹中的文件
使用 os.listdir
可以列出指定文件夹中的所有文件和子文件夹。可以结合 os.path
来过滤出文件:
import os
def list_files(directory):
for item in os.listdir(directory):
item_path = os.path.join(directory, item)
if os.path.isfile(item_path):
print(item_path)
# 使用示例
list_files('path_to_directory')
在这个示例中,os.listdir
列出文件夹中的所有项目,并使用 os.path.isfile
来检查每个项目是否为文件。
使用 pathlib
模块遍历文件夹
pathlib教程
Python路径操作模块pathlib,看这篇就够了!
python路径操作新标准:pathlib 模块
pathlib
是一个更现代、更面向对象的文件系统路径操作模块。
遍历文件夹中的文件和子文件夹
from pathlib import Path
def traverse_directory(directory):
path = Path(directory)
for item in path.rglob('*'): # 使用 rglob 递归遍历所有文件和子文件夹
print(item)
# 使用示例
traverse_directory('path_to_directory')
仅遍历某个文件夹中的文件
from pathlib import Path
def list_files(directory):
path = Path(directory)
for item in path.iterdir():
if item.is_file():
print(item)
# 使用示例
list_files('path_to_directory')
在这个示例中,Path.iterdir()
返回一个生成器,生成路径对象,item.is_file()
用于检查项目是否为文件。
综合示例
以下是一个综合示例,展示如何使用 os
模块和 pathlib
模块来遍历文件夹中的文件和子文件夹:
import os
from pathlib import Path
# 使用 os 模块遍历文件夹
def traverse_directory_os(directory):
print("使用 os 模块遍历文件夹:")
for dirpath, dirnames, filenames in os.walk(directory):
print(f'当前路径: {dirpath}')
print(f'子文件夹: {dirnames}')
print(f'文件: {filenames}')
print('------------------------')
# 使用 pathlib 模块遍历文件夹
def traverse_directory_pathlib(directory):
print("使用 pathlib 模块遍历文件夹:")
path = Path(directory)
for item in path.rglob('*'):
print(item)
# 示例调用
directory_path = 'path_to_directory'
traverse_directory_os(directory_path)
traverse_directory_pathlib(directory_path)
通过这两个示例,你可以选择适合自己需求的方法来遍历文件夹。os
模块适合于传统的脚本和小项目,而 pathlib
模块则更现代,适合于面向对象的编程风格。
License:
CC BY 4.0