Python循环遍历多文件夹读取.txt文件的实现方法求助
Hey there! 作为数据分析新手,要搞定批量读取多个文件夹里的txt文件,其实用Python自带的库就完全能搞定,不用额外安装包~下面给你两种常用实现方式,都是按顺序逐个处理文件夹和文件的逻辑,你可以根据喜好选:
方法一:使用
os模块(传统文件路径操作) 这个是Python内置的老牌文件操作模块,os.walk()方法刚好能帮你递归遍历所有文件夹和文件,完美匹配你的需求。
import os # 替换成你的工作目录路径,当前目录就用'.',绝对路径比如'C:/data_analysis/work_folder'也可以 work_directory = "." # 遍历工作目录下的所有层级文件夹和文件 for root, dirs, files in os.walk(work_directory): # 对文件夹列表排序,保证按你预期的顺序处理(默认是字母/数字排序) dirs.sort() # 对当前文件夹内的文件也排序 files.sort() for file_name in files: # 只筛选.txt格式的文件 if file_name.endswith(".txt"): # 拼接完整的文件路径,避免路径错误 full_file_path = os.path.join(root, file_name) print(f"正在读取:{full_file_path}") # 读取文件内容(用with语句会自动关闭文件,更安全) with open(full_file_path, "r", encoding="utf-8") as file: content = file.read() # 这里可以加你的数据分析逻辑,比如解析内容、存入DataFrame等 # 示例:打印文件前100个字符 # print(content[:100])
关键说明:
os.walk()会返回三个值:root是当前遍历到的文件夹路径,dirs是该文件夹下的子文件夹列表,files是该文件夹下的文件列表dirs.sort()和files.sort()是为了确保处理顺序符合你的预期,不然默认顺序可能随机- 如果你的txt文件是GBK等非UTF-8编码,把
encoding="utf-8"改成对应编码即可
方法二:使用
pathlib模块(现代面向对象方式) 这是Python3.4+推出的新模块,用面向对象的方式处理路径,代码更简洁直观,新手也容易理解。
from pathlib import Path # 定义工作目录路径对象 work_directory = Path(".") # 先遍历并排序所有子文件夹,保证按顺序处理 for folder in sorted(work_directory.iterdir()): # 只处理文件夹,跳过单个文件 if folder.is_dir(): print(f"正在处理文件夹:{folder.name}") # 遍历当前文件夹下的所有txt文件并排序 for txt_file in sorted(folder.glob("*.txt")): print(f"正在读取:{txt_file}") with open(txt_file, "r", encoding="utf-8") as file: content = file.read() # 这里添加你的数据分析逻辑
关键说明:
Path(".")把字符串路径转换成路径对象,后续操作更灵活sorted(work_directory.iterdir())先获取所有子文件夹并排序,完全符合你“逐个打开文件夹”的需求folder.glob("*.txt")直接筛选当前文件夹下的所有txt文件,不用手动拼接路径
额外提醒:
如果你的txt文件特别大,别用read()一次性读取全部内容,改用for line in file:逐行读取,避免内存占用过高哦~
内容的提问来源于stack exchange,提问作者Tiny_Y
相关产品推荐
相关产品推荐

