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

如何在Python中使用pandas.read_csv后提前删除原CSV文件

解决CSV读取后删除原文件提示被占用的问题

核心原因

Windows系统下,文件句柄未完全释放时无法执行删除操作。pd.read_csv默认处理文件时,有时不会立即关闭文件句柄(尤其是大文件场景),导致删除操作触发占用报错。

解决方案

方案1:手动管理文件句柄(适合可一次性读入内存的文件)

用with语句显式打开文件,读取完成后文件会自动关闭,此时就能安全删除原文件:

import pandas as pd
import os

file_path = "你的大文件.csv"

# 手动打开文件,读取后自动关闭句柄
with open(file_path, 'r', encoding='utf-8') as f:
    df = pd.read_csv(f)

# 此时文件已释放,直接删除
os.remove(file_path)

# 执行分割逻辑
chunk_size = 500000
for idx, start in enumerate(range(0, len(df), chunk_size)):
    chunk_df = df[start:start+chunk_size]
    chunk_df.to_csv(f"子文件_{idx}.csv", index=False)

方案2:分块读写+读完即删(适合超大型文件,避免内存溢出)

如果文件大到无法一次性读入内存,改成边读边写子文件,全部处理完成后立即删除原文件,既解决磁盘空间问题,也不会触发文件占用:

import pandas as pd
import os

chunk_size = 500000
file_path = "你的大文件.csv"

# 分块读取并直接写入子文件
for idx, chunk in enumerate(pd.read_csv(file_path, chunksize=chunk_size)):
    chunk.to_csv(f"子文件_{idx}.csv", index=False)

# 所有子文件生成后,删除原文件
os.remove(file_path)

方案3:强制释放句柄(应急方案)

如果不想改读取逻辑,可以手动触发垃圾回收释放文件句柄,但可靠性不如前两种:

import pandas as pd
import os
import gc

df = pd.read_csv("你的大文件.csv")
# 先把df转存到临时变量(避免被误删)
temp_df = df.copy()

# 释放原df并触发垃圾回收
del df
gc.collect()

# 此时文件句柄已释放,删除原文件
os.remove("你的大文件.csv")

# 用临时变量执行分割逻辑
chunk_size = 500000
for idx, start in enumerate(range(0, len(temp_df), chunk_size)):
    chunk_df = temp_df[start:start+chunk_size]
    chunk_df.to_csv(f"子文件_{idx}.csv", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 01:17:14