如何遍历子文件夹将TXT文件转换为CSV并保存至对应子文件夹
解决TXT批量转换为CSV并保存到原文件夹的问题
我帮你梳理下问题并修正代码,你的核心问题在于路径处理错误以及缺少读取TXT文件的关键步骤,咱们一步步来解决:
原代码的问题点
- 路径拼接错误:你用
root + os.sep + name拼接文件路径是不对的,os.walk返回的path已经是当前遍历的子文件夹路径,正确的文件路径应该用os.path.join(path, name)来拼接。 - 缺少TXT读取逻辑:代码里直接用
task_info变量,但完全没从目标TXT文件里读取内容,更没转换成可保存为CSV的格式。 - CSV保存路径错误:
path.join(filepath, file_name)是语法错误,要使用os.path.join()来拼接保存路径,同时需要把原TXT的后缀替换成.csv。
修正后的完整代码
import os import pandas as pd # 根文件夹路径,注意路径格式可以用正斜杠或者双反斜杠 root = "C:/user/main_folder/A/" # 遍历所有子文件夹和文件 for path, subdirs, files in os.walk(root): for name in files: # 拼接当前TXT文件的完整路径 txt_filepath = os.path.join(path, name) # 只处理TXT文件 if txt_filepath.endswith(".txt"): print(f"正在处理: {txt_filepath}") try: # 读取TXT文件——这里要根据你的TXT格式调整参数! # 示例:如果是制表符分隔的表格,用sep='\t';如果是逗号分隔用sep=',' # 如果是纯文本每行一条内容,用pd.read_csv(txt_filepath, header=None, names=['内容']) df = pd.read_csv(txt_filepath, sep='\t') # 生成CSV文件名:把原文件名的.txt替换成.csv csv_filename = os.path.splitext(name)[0] + '.csv' # 拼接CSV的保存路径(和原TXT在同一个文件夹) csv_filepath = os.path.join(path, csv_filename) # 保存为CSV,不保留索引列 df.to_csv(csv_filepath, index=False) print(f"已完成保存: {csv_filepath}") except Exception as e: # 捕获异常,避免单个文件出错导致整个脚本终止 print(f"处理文件 {txt_filepath} 时出错: {str(e)}")
关键注意事项
- 适配你的TXT格式:不同的TXT结构需要调整
pd.read_csv的参数,比如纯文本无表头的文件,要加上header=None并自定义列名;如果是空格分隔,用sep='\s+'。 - 依赖安装:如果还没装pandas,执行
pip install pandas即可。 - 异常处理:代码里的
try-except块能帮你跳过有问题的文件,同时打印错误信息方便排查。
内容的提问来源于stack exchange,提问作者Yag_r
相关产品推荐
相关产品推荐

