Python实现文件夹中文本文件批量转换为CSV格式
批量将文件夹中TXT文件转换为CSV的解决方案
原代码问题分析
你的代码存在几个关键错误,直接导致了EmptyDataError和逻辑失效:
- 读取文件时误用字符串字面量
'filename'而非变量filename,pandas会尝试读取名为"filename"的文件而非目标TXT文件 - 读取后未将数据存入DataFrame变量,直接调用
filename.to_csv完全错误——filename是路径字符串,并没有to_csv方法 - 未生成新的CSV文件名,既会引发语法错误,还可能误覆盖原文件
修正后的批量转换代码
import os import pandas as pd files_dir = r'C:\Users\rajat.kapoor\Desktop\Scrub_Data\RPT_AR' # 遍历文件夹内所有文件 for file_name in os.listdir(files_dir): # 仅处理以RPT_AR开头的TXT文件 if file_name.startswith('RPT_AR') and file_name.endswith('.txt'): file_path = os.path.join(files_dir, file_name) try: # 读取TXT文件,指定分隔符为| df = pd.read_csv(file_path, sep='|') # 生成对应CSV文件名(替换后缀) csv_file_path = os.path.splitext(file_path)[0] + '.csv' # 保存为CSV,按需设置index=False去除索引列 df.to_csv(csv_file_path, index=False) print(f"转换完成:{file_name} → {os.path.basename(csv_file_path)}") except Exception as e: print(f"{file_name}转换失败:{str(e)}")
核心说明
- 用
startswith+endswith直接筛选目标文件,比fnmatch更简洁高效 - 将读取的文本数据存入DataFrame对象后,再调用
to_csv生成CSV文件 - 通过
os.path.splitext替换文件后缀,确保每个TXT生成同名CSV,不会覆盖原有RPT_AR1.csv - 增加异常捕获,方便排查单个文件的格式或空文件问题
内容的提问来源于stack exchange,提问作者RajatK350
相关产品推荐
相关产品推荐

