Python 2.7中如何循环切换工作目录并读取多目录文件
如何用Python遍历多个目录处理文件
嘿Javier,作为Python新手遇到这种问题太正常啦,我来给你几个简单易懂的方案,帮你搞定这个需求~
方法一:使用os模块(基础入门)
os是Python内置的文件系统处理模块,逻辑直观,很适合新手入门:
import os # 定义根目录的路径 root_path = "/home/Documents/foamOutput" # 遍历0到6的文件夹(你的文件夹是连续数字0-6,用range(7)刚好覆盖) for folder_num in range(7): # 拼接当前文件夹的完整路径 folder_path = os.path.join(root_path, str(folder_num)) # 先检查文件夹是否存在,避免报错 if not os.path.isdir(folder_path): print(f"文件夹 {folder_num} 不存在,跳过") continue # 遍历当前文件夹里的所有内容 for filename in os.listdir(folder_path): # 拼接文件的完整路径 file_path = os.path.join(folder_path, filename) # 确保是文件(不是嵌套的子文件夹) if os.path.isfile(file_path): # 这里写你的文件处理逻辑,比如读取内容、分析数据等 print(f"正在处理文件: {file_path}") # 示例:读取文件内容 with open(file_path, 'r') as f: content = f.read() # 这里可以添加你的自定义处理代码
方法二:使用pathlib模块(现代推荐)
Python3.4+引入了pathlib,用面向对象的方式处理路径,代码更简洁易读,推荐你尝试这种更现代的写法:
from pathlib import Path # 定义根目录路径 root_path = Path("/home/Documents/foamOutput") # 遍历0到6的文件夹 for folder_num in range(7): folder_path = root_path / str(folder_num) # 检查文件夹是否存在 if not folder_path.is_dir(): print(f"文件夹 {folder_num} 不存在,跳过") continue # 遍历文件夹里的所有文件(用glob('*')匹配所有内容,再过滤出文件) for file_path in folder_path.glob('*'): if file_path.is_file(): print(f"正在处理文件: {file_path}") # 示例:读取文件内容 content = file_path.read_text() # 添加你的处理逻辑
额外小提示
- 如果你的文件夹名字不是连续数字,需要自动识别根目录下所有子文件夹,可以这样调整:
# os模块写法 for folder_name in os.listdir(root_path): folder_path = os.path.join(root_path, folder_name) if os.path.isdir(folder_path): # 后续处理逻辑和之前一致 # pathlib写法 for folder_path in root_path.iterdir(): if folder_path.is_dir(): # 后续处理逻辑和之前一致 - 处理文件时建议加上异常捕获,避免因文件无法读取等问题导致程序崩溃:
try: with open(file_path, 'r') as f: content = f.read() except Exception as e: print(f"处理文件 {file_path} 出错: {e}")
希望这些代码能帮到你,有其他问题随时问哦~
内容的提问来源于stack exchange,提问作者Javier Marco
相关产品推荐
相关产品推荐

