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

为何Dask读取文件后删除源文件报FileNotFound错误,而Pandas不会?

问题根因
  • Dask的核心设计是懒执行:调用dd.read_csv()时仅生成逻辑执行图,不会实际将文件数据加载到内存,只有触发compute()/persist()/数据导出等实际计算操作时,才会去读取源文件内容。
  • Pandas是立即执行:调用pd.read_csv()时就会把全量数据加载到内存,后续操作和源文件没有关联,所以删除源文件不会报错。
解决方案(针对小数据集场景)

方案1:直接转为Pandas DataFrame

如果你的数据集完全可以放入单机内存,不需要用到Dask的分布式计算能力,直接将Dask DataFrame转换为Pandas DataFrame即可:

import dask.dataframe as dd

# 读取csv生成Dask DataFrame
ddf = dd.read_csv("data_iris.csv")
# 触发全量数据加载,转为Pandas DataFrame
df = ddf.compute()

# 此时可以安全删除源文件,后续操作df完全不依赖源文件

方案2:保留Dask DataFrame结构,将数据持久化到内存

如果你需要继续使用Dask的接口做后续计算,可以调用persist()方法将全量数据加载到内存中,后续操作不会再访问源文件:

import dask.dataframe as dd

# 读取csv后直接持久化到内存
ddf = dd.read_csv("data_iris.csv").persist()

# 此时可以安全删除源文件,所有对ddf的后续操作直接读取内存数据

注意:两种方案都需要确保你的可用内存大小足以容纳全量数据集,小数据集场景下完全适用。如果是超过内存的大数据集,建议先将数据转存为Parquet等更高效的持久化格式后再删除源csv文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:27:03