如何多次运行Python脚本分批将TXT文件转换为CSV(每次10个)
分批次处理TXT转CSV的实现方案
首先修正原代码的语法错误:原代码中df.to_csv(f'{filename}.csv,header=None,index=False')存在字符串闭合错误,正确写法应为df.to_csv(f'{filename}.csv', header=None, index=False),否则会触发语法报错。
要实现每次运行处理10个文件、多次运行按顺序分批的需求,核心是通过一个状态文件记录已处理的文件数量,每次运行读取状态并计算当前要处理的批次范围。具体实现代码如下:
import pandas as pd import pathlib # 配置参数 FOLDER_PATH = pathlib.Path("folderpathtotxtfiles") BATCH_SIZE = 10 STATUS_FILE = FOLDER_PATH / "processed_count.txt" def create_csv(filename): try: df = pd.read_csv(filename, sep='\s+', on_bad_lines='skip') # 修正原代码的字符串拼接错误 df.to_csv(f"{filename}.csv", header=None, index=False) except Exception as e: print(f"{filename} 处理失败:{str(e)}") def get_processed_count(): """读取已处理文件数量,不存在则返回0""" if STATUS_FILE.exists(): with open(STATUS_FILE, 'r') as f: try: return int(f.read().strip()) except ValueError: return 0 return 0 def update_processed_count(count): """更新已处理文件数量到状态文件""" with open(STATUS_FILE, 'w') as f: f.write(str(count)) if __name__ == "__main__": # 获取所有TXT文件并排序,保证处理顺序稳定 all_txt_files = sorted(FOLDER_PATH.glob('*.txt')) total_files = len(all_txt_files) processed_count = get_processed_count() # 计算当前批次的文件范围 start_idx = processed_count end_idx = min(start_idx + BATCH_SIZE, total_files) if start_idx >= total_files: print("所有文件已处理完毕") else: batch_files = all_txt_files[start_idx:end_idx] print(f"开始处理第 {start_idx+1}-{end_idx} 个文件,共 {len(batch_files)} 个") for filename in batch_files: create_csv(filename) # 更新已处理数量 update_processed_count(end_idx) print(f"本次处理完成,已累计处理 {end_idx} 个文件")
关键逻辑说明:
- 状态文件:
processed_count.txt会自动创建在目标文件夹中,记录已处理的文件总数,每次运行前读取该数值确定起始位置。 - 文件排序:用
sorted()对TXT文件排序,确保每次运行时文件顺序一致,避免重复处理或遗漏。 - 批次计算:每次取
[已处理数, 已处理数+10]范围内的文件,若剩余文件不足10个则处理剩余全部。 - 错误处理:扩展了异常捕获,输出具体错误信息,便于排查问题。
使用方式:
- 替换
FOLDER_PATH为你的TXT文件所在路径。 - 每次运行脚本,会自动处理下一批10个文件;重复运行直到提示"所有文件已处理完毕"。
内容的提问来源于stack exchange,提问作者Dappergemini
相关产品推荐
相关产品推荐

