在Python中,遍历多个文件通常有以下几种方法:
1. 使用`os.walk()`函数:
import osdef 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 osdef 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 felse:yield path调用函数遍历文件夹for file_path in walk_dir('/path/to/folder'):print(file_path)
3. 使用`os.scandir()`函数进行遍历:
import osfrom tqdm import tqdmdef 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.pathif path.startswith('.'): 忽略隐藏文件continueif 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()`在处理大型文件夹时效率更高,因为它们不会将整个文件系统加载到内存中。

