咨询:如何用Python批量处理30+文本文件,替代手动重复操作
嘿,手动改代码重复处理文件确实太折磨人了!用Python完全能轻松自动化这个流程,我给你两个实用的方案,你可以根据自己的习惯选:
方案1:用os模块(基础易上手)
这个方案用Python内置的os模块,适合刚接触文件操作的朋友,逻辑清晰直观:
import os def process_file(input_file_path): """这里写你的具体文件处理逻辑,替换成你实际需要的操作""" with open(input_file_path, 'r', encoding='utf-8') as f: content = f.read() # 举个例子:假设你要把每行的单词连成句子,这里只是占位,换成你的真实处理 processed_content = ' '.join(content.splitlines()) return processed_content # 指定要处理的文件夹路径,当前目录就用'./',其他路径直接写,比如'D:/text_files/' target_folder = './' # 遍历文件夹里的所有文件 for filename in os.listdir(target_folder): # 只处理以_words.txt结尾的文件 if filename.endswith('_words.txt'): # 拼接完整的输入文件路径 input_path = os.path.join(target_folder, filename) # 生成输出文件名:把_words.txt替换成_sentences.txt output_filename = filename.replace('_words.txt', '_sentences.txt') output_path = os.path.join(target_folder, output_filename) # 执行处理并保存结果 processed_content = process_file(input_path) with open(output_path, 'w', encoding='utf-8') as f: f.write(processed_content) print(f"搞定:{filename} → {output_filename}")
关键点说明:
process_file函数:必须把里面的示例代码换成你实际的处理逻辑(比如分词、格式转换等)- 编码:如果你的文件不是UTF-8编码,把
encoding='utf-8'改成对应的编码(比如gbk) - 路径:
target_folder可以改成你存放文件的真实路径
方案2:用pathlib模块(更简洁的现代写法)
Python3.4+自带的pathlib模块用面向对象的方式处理路径,代码更简洁易读:
from pathlib import Path def process_file(input_file_path): """和方案1一样,替换成你的实际处理逻辑""" with open(input_file_path, 'r', encoding='utf-8') as f: content = f.read() # 示例处理:把换行换成句号加空格,模拟生成句子 processed_content = content.replace('\n', '. ') return processed_content # 指定目标文件夹 target_folder = Path('./') # 直接筛选所有以_words.txt结尾的文件 for input_file in target_folder.glob('*_words.txt'): # 生成输出文件名:去掉原后缀,替换_words为_sentences,再加.txt output_filename = input_file.stem.replace('_words', '_sentences') + '.txt' output_file = target_folder / output_filename # 处理并保存 processed_content = process_file(input_file) output_file.write_text(processed_content, encoding='utf-8') print(f"处理完成:{input_file.name} → {output_filename}")
额外建议:
- 备份文件:如果担心处理出错,可以先复制原文件到备份文件夹,再执行处理
- 避免覆盖:可以在保存前加个判断,如果输出文件已经存在,提示或者跳过:
if output_file.exists(): print(f"警告:{output_filename}已存在,跳过处理") continue
内容的提问来源于stack exchange,提问作者kumar
相关产品推荐
相关产品推荐

