新闻中心

Python实现文本处理中批量文件处理的详细教程【教程】

2025-12-15
浏览次数:
返回列表
批量处理文本文件应分步构建可复用流程:优先用pathlib或glob安全定位文件,用chardet或编码列表容错读取,处理后默认输出到output/目录,加tqdm进度条与try/except错误隔离,并拆分为小函数提升可维护性。

python实现文本处理中批量文件处理的详细教程【教程】

批量处理文本文件在日常数据清洗、日志分析、文档整理中非常常见。用 Python 实现,核心是结合 osglobpathlib 遍历文件,再用 opencodecs 读写,配合 recsvpandas 等做内容处理。关键不是“一次写完所有功能”,而是分步构建可复用、易调试的流程。

快速定位目标文件(支持通配与递归)

别硬写 for 循环遍历目录树。优先用 pathlib(Python 3.4+ 内置,面向对象更清晰)或 glob(语法简洁)。

  • 用 pathlib 找当前目录下所有 .txt 文件:
    from pathlib import Path<br>files = list(Path(".").glob("*.txt"))
  • 递归查找子目录中的 .log 和 .csv:
    files = list(Path(".").rglob("*.log")) + list(Path(".").rglob("*.csv"))
  • 用 glob 需注意:返回的是字符串路径,且不自动递归,要加 **/ 并设 recursive=True
    import glob<br>files = glob.glob("**/*.md", recursive=True)

安全读取多种编码的文本文件

中文环境常遇到 UnicodeDecodeError。不要默认用 utf-8 硬开——先尝试 utf-8,失败后自动 fallback 到 gbk 或检测编码。

  • 简单健壮方案(推荐):
    chardet 库自动检测(需 pip install chardet):
    import chardet<br>with open(file, "rb") as f:<br>  raw = f.read()<br>  encoding = chardet.detect(raw)["encoding"] or "utf-8"<br>  text = raw.decode(encoding)
  • 轻量替代(无第三方依赖):逐个尝试常见编码:
    encodings = ["utf-8", "gbk", "latin-1"]<br>for enc in encodings:<br>  try:<br>    with open(file, encoding=enc) as f:<br>      text = f.read()<br>      break<br>  except UnicodeDecodeError:<br>    continue

按规则修改内容并保存(原地 or 新目录)

处理逻辑写清楚,保存时注意区分“覆盖原文件”和“输出到新位置”。强烈建议默认输出到 output/ 子目录,避免误删原始数据。

Websphere教程 中文WORD版 Websphere教程 中文WORD版

本文档是Websphere教程;WebSphere 是因特网的基础架构软件,也就是我们所说的中间件。它使企业能够开发、部署和集成新一代电子商务应用(如 B2B 的电子交易),并且支持从简单的 Web 发布到企业级事务处理的商务应用。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

Websphere教程 中文WORD版 0 查看详情 Websphere教程 中文WORD版
  • 示例:把所有文件里的多个空格替换成单个空格,并删除行首尾空白:
    import re<br>for file in files:<br>  # 读取<br>  text = read_text_safely(file) # 上一步封装好的函数<br>  # 处理<br>  text = re.sub(r" +", " ", text)<br>  text = "\n".join(line.strip() for line in text.splitlines())<br>  # 保存到 output 目录(自动创建)<br>  out_path = Path("output") / file.name<br>  out_path.parent.mkdir(exist_ok=True)<br>  out_path.write_text(text, encoding="utf-8")
  • 如需保留原文件名结构(含子目录),用 file.relative_to(root) 构造输出路径:
    root = Path(".")<br>out_path = Path("output") / file.relative_to(root)

加进度提示与错误隔离,让脚本更可靠

几百个文件跑一半报错就中断?加 try/except 捕获单个文件异常,并记录日志;用 tqdm 显示进度条(pip install tqdm)提升体验。

  • 带错误跳过的循环:
    from tqdm import tqdm<br>success, failed = 0, []<br>for file in tqdm(files, desc="Processing"):<br>  try:<br>    process_and_s*e(file)<br>    success += 1<br>  except Exception as e:<br>    failed.append((str(file), str(e)))<br>print(f"完成 {success}/{len(files)},失败 {len(failed)} 个")
  • 把失败列表写入 report.txt 方便复查:
    if failed:<br>  with open("report.txt", "w", encoding="utf-8") as f:<br>    for path, err in failed:<br>      f.write(f"{path}\t{err}\n")

基本上就这些。不复杂但容易忽略细节:编码容错、路径安全、错误隔离、输出分离。把每步拆成小函数(如 read_text_safely()clean_text()s*e_to_output()),后续改需求或加新格式(比如支持 Excel 或 JSONL)就非常顺手。

以上就是Python实现文本处理中批量文件处理的详细教程【教程】的详细内容,更多请关注其它相关文章!


# python  # 多个  # 进度条  # 的是  # 复用  # 中非  # 文档  # 遍历  # 面向对象  # 文本文件  # 数据清洗  # ai  # csv  # app  # 编码  # json  # js  # excel  # 递归  # 德阳集团网站建设  # 常州营销推广怎么投  # 营销推广软件大全  # 彩信营销推广怎么用  # 阜南网站建设  # 网站优化用户体验度不够  # 常州网站营销与推广  # 成都网站建设公司的  # 无锡网站建设哪家更好  # SEO联盟头像女搞怪 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】  C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法  ArrayList与LinkedList操作复杂度详解:遍历与修改  处理动态列数据:J*a ArrayList的正确初始化与字符累加教程  Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略  处理嵌套交互式控件:前端可访问性指南  解决深度学习模型训练初期异常高损失与完美验证准确率问题  Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议  UC浏览器网页版登录入口官网 电脑版网址入口  将HTML Canvas内容转换为可上传的图像文件(File对象)  J*aScript数组对象转换:按指定键分组与值收集  Linux如何构建多环境配置管理_Linux多环境配置方案  wps文字怎么插入目录并自动更新_wps文字如何插入目录并自动更新方法  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  在J*a中如何使用Stream.map转换元素_Stream映射操作解析  微信网页版官方入口教程 微信网页版网页版快速登录步骤  《GTA6》开发画面疑似泄露!这次可不是AI了  微信客户端如何收红包_微信客户端接收红包使用教程  C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果  海量存储:机器视觉智能化的核心基石  使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性  谷歌浏览器一键优化方案_谷歌浏览器直达主页极速不卡版  2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析  抖音极速版最新版本 抖音极速版官方下载地址  Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】  J*aScript设计模式实践_j*ascript代码优化  怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】  淘宝支付提示失败如何解决 淘宝支付流程优化方法  从J*aScript对象中精确提取指定属性的教程  CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠  印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】  Lar*el用户头像管理:实现图片缩放、存储与旧文件安全删除的最佳实践  腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程  如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略  怎么在mac上运行html代码_mac运行html代码方法【指南】  微信怎么把收藏的内容分类管理 微信收藏内容标签分类方法  解决Python logging 中 datefmt 导致时间戳固定不变的问题  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】  2026春节假期票务安排_2026春节放假购票指南  Django AJAX 文件上传教程:解决图片无法保存到模型的常见问题  知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法  在J*a中如何开发简易电子商务商品管理系统_商品管理系统项目实战解析  Angular中父组件异步更新子组件复选框状态的实践指南  微信群消息显示延迟如何解决 微信群消息刷新优化方法  铁路12306改签能改到更早的车次吗_铁路12306改签提前车次规则  2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享  高德地图公交到站提醒失败如何解决 高德提醒权限设置  深入理解J*aScript中的B样条曲线与节点向量生成  C++指针和引用有什么区别_C++内存管理核心概念深度解析 

搜索