在Python中,遍历多个文件通常有以下几种方法:
1. 使用`os.walk()`函数:
import os
def traverse_folder(folder_path):
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
处理文件,例如打印文件路径
print(file_path)
folder_path = '/path/to/folder' 替换为要遍历的文件夹路径
traverse_folder(folder_path)
2. 使用`os.listdir()`函数递归遍历:
import os
def walk_dir(dirname):
for d in os.listdir(dirname):
path = os.path.join(dirname, d)
if os.path.isdir(path):
递归遍历子文件夹
for f in walk_dir(path):
yield f
else:
yield path
调用函数遍历文件夹
for file_path in walk_dir('/path/to/folder'):
print(file_path)
3. 使用`os.scandir()`函数进行遍历:
import os
from tqdm import tqdm
def traverse_dir_files_for_large(root_dir, ext=None, depth_first=True):
paths_list = []
dir_list = [root_dir]
while len(dir_list) != 0:
dir_path = dir_list.pop(0)
dir_name = os.path.basename(dir_path)
for entry in tqdm(os.scandir(dir_path), f"[Info] dir {dir_name}"):
path = entry.path
if path.startswith('.'): 忽略隐藏文件
continue
if os.path.isfile(path):
if ext is None or path.endswith(ext):
paths_list.append(path)
elif os.path.isdir(path):
dir_list.append(path)
return paths_list
调用函数遍历文件夹及其子文件夹中的文件
file_paths = traverse_dir_files_for_large('/path/to/folder', ext='.txt')
print(file_paths)
以上方法均可用于遍历文件夹及其子文件夹中的所有文件。你可以根据具体需求选择合适的方法。需要注意的是,`os.walk()`和`os.scandir()`在处理大型文件夹时效率更高,因为它们不会将整个文件系统加载到内存中。