You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python分割大CSV文件时函数定义触发SyntaxError错误求助

解决Python分割CSV文件的语法错误及代码优化

语法错误原因

函数定义时,参数列表里不能直接写常量值10000,必须为参数指定变量名(比如rows_per_chunk),这是Python函数定义的基本语法要求。

修正后的完整代码

import pandas as pd
import os
import numpy as np

def split_csv_into_chunks(file_path, rows_per_chunk=10000):
    # 读取CSV文件到DataFrame
    df = pd.read_csv(file_path)
    
    # 计算需要分割的总块数(处理总行数无法被分片行数整除的情况)
    total_chunks = len(df) // rows_per_chunk + (1 if len(df) % rows_per_chunk != 0 else 0)
    
    # 分割DataFrame
    chunks = np.array_split(df, total_chunks)
    
    # 获取文件名(不含路径和后缀)
    file_name = os.path.splitext(os.path.basename(file_path))[0]
    # 创建输出目录(避免文件散落在根目录)
    output_dir = "split_chunks"
    os.makedirs(output_dir, exist_ok=True)
    
    # 保存每个分片
    for i, chunk in enumerate(chunks):
        chunk_path = os.path.join(output_dir, f"{file_name}_chunk_{i+1}.csv")
        chunk.to_csv(chunk_path, index=False)
        print(f"分片 {i+1} 已保存至: {chunk_path}")

# 调用函数执行分片
Endcustomers = "Resources/WESTCON_INTE_LTD_2024_01_GBP.csv"
split_csv_into_chunks(Endcustomers)

额外优化说明

  • 参数化配置:将分片行数设为带默认值的参数,方便灵活调整分片大小
  • 路径安全处理:用os.path模块处理文件名和路径,避免跨平台路径兼容问题
  • 目录管理:自动创建分片保存目录,保持文件结构整洁
  • 边界逻辑修正:优化总块数计算逻辑,避免总行数为分片行数整数倍时生成空文件

超大型CSV的进阶优化(避免内存溢出)

如果CSV文件大到无法一次性加载到内存,改用pd.read_csv的chunksize参数逐块读取处理:

import pandas as pd
import os

def split_large_csv(file_path, rows_per_chunk=10000):
    file_name = os.path.splitext(os.path.basename(file_path))[0]
    output_dir = "split_chunks"
    os.makedirs(output_dir, exist_ok=True)
    
    # 逐块读取CSV,无需一次性加载全部数据
    chunk_iter = pd.read_csv(file_path, chunksize=rows_per_chunk)
    
    for i, chunk in enumerate(chunk_iter):
        chunk_path = os.path.join(output_dir, f"{file_name}_chunk_{i+1}.csv")
        chunk.to_csv(chunk_path, index=False)
        print(f"分片 {i+1} 已保存至: {chunk_path}")

# 调用执行
split_large_csv("Resources/WESTCON_INTE_LTD_2024_01_GBP.csv")

内容的提问来源于stack exchange,提问作者RedaB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:56:28