import os import shutil def split_to_input_folder(input_file, rows_per_file=15): """ 将原始 CSV 切分并存入 ./input/ 文件夹,完成后删除原文件 """ target_dir = "input" # 1. 检查源文件 if not os.path.exists(input_file): print(f"❌ 错误:找不到源文件 '{input_file}'") return # 2. 创建 input 文件夹(如果不存在) if not os.path.exists(target_dir): os.makedirs(target_dir) print(f"📁 已创建目录: {target_dir}") # 3. 读取内容 try: try: with open(input_file, 'r', encoding='utf-8') as f: lines = f.readlines() except UnicodeDecodeError: with open(input_file, 'r', encoding='gb18030') as f: lines = f.readlines() except Exception as e: print(f"❌ 读取文件失败: {e}") return if len(lines) < 2: print("⚠️ 文件中没有足够的账号数据。") return # 提取表头和数据行 header = lines[0] data_lines = [l for l in lines[1:] if l.strip()] total_accounts = len(data_lines) print(f"📂 发现 {total_accounts} 个账号,准备切分...") # 4. 开始切分并写入 input 文件夹 file_count = 0 success_count = 0 for i in range(0, total_accounts, rows_per_file): file_count += 1 chunk = data_lines[i: i + rows_per_file] # 生成输出路径,例如: input/outlook账号_part_1.csv base_name = os.path.splitext(os.path.basename(input_file))[0] output_filename = f"{base_name}_part_{file_count}.csv" output_path = os.path.join(target_dir, output_filename) try: with open(output_path, 'w', encoding='utf-8') as f: f.write(header) f.writelines(chunk) success_count += 1 print(f"✅ 已存入: {output_path} ({len(chunk)} 个账号)") except Exception as e: print(f"❌ 写入 {output_path} 失败: {e}") return # 安全起见,失败则不删除原文件 # 5. 彻底删除原大文件 if success_count > 0: try: os.remove(input_file) print(f"\n🚀 分割完成!共生成 {success_count} 个文件并存入 '{target_dir}' 文件夹。") print(f"🗑️ 原始文件 '{input_file}' 已删除。") except Exception as e: print(f"\n⚠️ 子文件已生成,但删除原文件失败: {e}") if __name__ == "__main__": split_to_input_folder('outlook账号.csv', rows_per_file=15)