Python脚本使用argparse批量处理目录文件故障求助
Fixing the Argparse Logic for Batch File Processing in Python Script
我明白你遇到的问题了——单个文件处理的convert函数没问题,但负责批量调度的argparse逻辑出了岔子,导致整个脚本没法正常跑。下面我给你一个完整的修复版本,附带详细解释,你可以直接套用:
import argparse import os import glob # 这里是你的convert函数(示例用转大写演示,你替换成自己的处理逻辑即可) def convert(input_file_path): """处理单个文件的核心函数,单独调用正常运行""" try: with open(input_file_path, 'r', encoding='utf-8') as f: content = f.read() # 示例处理:转大写,你替换成自己的业务逻辑 processed_content = content.upper() # 示例:输出到原文件同目录,后缀加_processed output_file_path = f"{os.path.splitext(input_file_path)[0]}_processed.txt" with open(output_file_path, 'w', encoding='utf-8') as f: f.write(processed_content) print(f"✅ 处理完成:{input_file_path} → {output_file_path}") except Exception as e: print(f"❌ 处理失败 {input_file_path}: {str(e)}") def main(): # 1. 初始化argparse解析器 parser = argparse.ArgumentParser(description='批量处理指定目录下的所有文件') # 2. 添加命令行参数:指定要处理的目录,可选添加文件类型过滤 parser.add_argument('input_dir', help='要处理的文件所在目录路径') parser.add_argument('--file-type', default='*', help='可选:过滤文件类型,比如 *.txt、*.csv') # 3. 解析命令行输入 args = parser.parse_args() # 4. 验证输入目录是否存在 if not os.path.isdir(args.input_dir): print(f"错误:目录 {args.input_dir} 不存在!") return # 5. 获取目录下符合条件的所有文件 file_pattern = os.path.join(args.input_dir, args.file_type) target_files = glob.glob(file_pattern) if not target_files: print(f"目录 {args.input_dir} 下没有找到符合 {args.file_type} 的文件") return # 6. 批量调用convert函数处理每个文件 print(f"找到 {len(target_files)} 个待处理文件,开始批量处理...") for file_path in target_files: # 跳过子目录,只处理文件 if os.path.isfile(file_path): convert(file_path) if __name__ == '__main__': main()
关键修复点说明:
- Argparse逻辑标准化:用清晰的步骤初始化解析器、添加参数、解析输入,避免参数定义混乱或者解析错误
- 目录合法性校验:先检查用户输入的目录是否存在,避免后续无意义的报错
- 文件过滤与遍历:用
glob替代简单的os.listdir,支持灵活的文件类型过滤,同时自动跳过子目录只处理文件 - 异常处理增强:在
convert函数里加入异常捕获,避免单个文件处理失败导致整个脚本中断
怎么运行这个脚本:
比如你要处理./data目录下所有的.txt文件,直接在命令行输入:
python your_script.py ./data --file-type *.txt
如果要处理目录下所有文件,直接省略--file-type参数即可:
python your_script.py ./data
你只需要把示例里的convert函数逻辑替换成你自己的处理代码(比如格式转换、数据提取等),就能正常批量运行了。
内容的提问来源于stack exchange,提问作者ARM
相关产品推荐
相关产品推荐

