如何升级处理HTML文件的Python调用Pipeline代码以增加检查机制?
升级Python代码批量处理目录下的HTML文件
嘿,我来帮你搞定这个需求!结合你提到的场景——要处理../path/下大量HTML文件,还要增加必要的检查逻辑,我整理了优化后的代码,一步步给你拆解:
完整升级代码
import subprocess import os # 把路径定义成常量,后续修改维护更方便 INPUT_DIR = "../path" OUTPUT_DIR = "../output" DATA_DIR = "../data" TEMP_DIR = "../temp" def process_html_files(): # 先检查输出目录,不存在就自动创建,避免Pipeline报错 if not os.path.exists(OUTPUT_DIR): os.makedirs(OUTPUT_DIR) print(f"已创建输出目录: {OUTPUT_DIR}") # 检查输入目录是否存在,提前报错终止,避免后续白忙活 if not os.path.isdir(INPUT_DIR): print(f"错误:输入目录 {INPUT_DIR} 不存在,请检查路径!") return # 遍历目录下所有文件,只处理HTML后缀的 for filename in os.listdir(INPUT_DIR): if filename.lower().endswith(".html"): file_path = os.path.join(INPUT_DIR, filename) # 确保是文件不是子目录 if os.path.isfile(file_path): print(f"开始处理: {filename}") # 调用Pipeline进程,同时捕获错误输出 p = subprocess.Popen( ["./process", "-d", DATA_DIR, "-t", TEMP_DIR, "-o", OUTPUT_DIR, file_path], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True # 直接以文本模式读取输出,不用手动解码 ) out, err = p.communicate() # 检查进程执行状态,判断处理是否成功 if p.returncode == 0: print(f"{filename} 处理完成 ✅") # 可选:如果需要查看进程输出,解开下面的注释 # print(f"进程输出: {out}") else: print(f"{filename} 处理失败 ❌,状态码: {p.returncode}") print(f"错误详情: {err}") if __name__ == "__main__": process_html_files()
核心升级点说明
- 路径规范化:把分散的路径改成常量,避免字符串拼接出错,后续改路径也更省心。
- 前置检查逻辑:
- 自动创建输出目录,解决Pipeline因目录不存在报错的问题。
- 提前校验输入目录是否存在,快速给出错误提示,避免无效遍历。
- 批量处理能力:自动遍历目录下所有HTML文件,跳过子目录,不用手动逐个指定文件名。
- 错误排查优化:新增捕获错误输出,同时检查进程状态码,能快速定位哪个文件处理失败、失败原因是什么。
可选扩展(按需添加)
如果需要更精细的控制,还可以加这些功能:
- 跳过空的HTML文件,避免无意义的处理。
- 把处理日志写入文件,方便后续复盘。
- 用多进程并行处理,提升批量处理的效率(如果你的Pipeline支持并行的话)。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

