如何使用Python3将目录下多个CSV文件转换为竖线分隔文本文件
批量转换CSV为竖线分隔TXT文件
嘿,你已经搞定单个文件的转换了,这很棒!要批量处理近200个CSV文件其实非常简单,咱们只需要借助Python的os模块来遍历目标目录下的所有CSV,然后复用你现有的处理逻辑就行。下面是完整的解决方案:
完整代码示例
import csv import os # 替换成你的CSV文件所在的目录路径 input_dir = 'C:/Path/YourCSVFolder' # 遍历目录下所有的CSV文件 for filename in os.listdir(input_dir): # 只处理后缀为.csv的文件 if filename.endswith('.csv'): # 构建完整的输入文件路径 input_path = os.path.join(input_dir, filename) # 构建输出文件路径:把.csv后缀换成.txt output_filename = filename.replace('.csv', '.txt') output_path = os.path.join(input_dir, output_filename) # 复用你已有的文件处理逻辑 with open(input_path, 'r') as fin, open(output_path, 'w') as fout: reader = csv.DictReader(fin) writer = csv.DictWriter(fout, reader.fieldnames, delimiter='|') writer.writeheader() writer.writerows(reader) print(f"已完成转换:{filename} -> {output_filename}")
关键细节说明
- 路径处理:用
os.path.join来拼接路径,这样不管是Windows还是其他系统都能正常工作,避免手动写斜杠导致的兼容性问题。 - 过滤文件:通过
filename.endswith('.csv')确保只处理CSV文件,不会误操作目录里的其他类型文件。 - 同名输出:用
replace('.csv', '.txt')直接把原文件名的后缀替换成.txt,保证输出文件和输入文件同名且在同一目录下,方便你后续查找。
进阶:递归处理子目录里的CSV
如果你的CSV文件分散在多个子目录里,可以改用glob模块来递归查找所有CSV文件:
import csv import glob import os input_dir = 'C:/Path/YourCSVFolder' # 递归查找所有子目录下的CSV文件 for input_path in glob.glob(os.path.join(input_dir, '**', '*.csv'), recursive=True): # 构建输出路径:替换后缀为.txt output_path = input_path.replace('.csv', '.txt') with open(input_path, 'r') as fin, open(output_path, 'w') as fout: reader = csv.DictReader(fin) writer = csv.DictWriter(fout, reader.fieldnames, delimiter='|') writer.writeheader() writer.writerows(reader) print(f"已完成转换:{input_path} -> {output_path}")
这样就能一次性处理所有CSV文件啦,运行完之后你会在每个CSV文件的同一位置看到对应的竖线分隔TXT文件。
内容的提问来源于stack exchange,提问作者Vicky del Real
相关产品推荐
相关产品推荐

