Python 有没有办法让dask read_csv忽略空文件?
我有一个每天有200k个文件的数据集,这些文件非常小Python 有没有办法让dask read_csv忽略空文件?,python,pandas,amazon-s3,dask,Python,Pandas,Amazon S3,Dask,我有一个每天有200k个文件的数据集,这些文件非常小.txt.gz,其中99%小于60KB。由于gzip压缩,其中一些文件是大小为20的空文件 当我尝试用dask加载整个目录时,我得到一个pandas.errors.EmptyDataError。由于我计划每天直接从S3加载这些文件,我想知道是否可以通过dd.read\u csv()忽略或跳过这些文件。我在dask和pandas的文档中没有找到任何控制错误处理的选项 当然,我可以将所有文件从s3复制到本地硬盘,并在加载到Dask之前扫描并删除所有
.txt.gz
,其中99%小于60KB。由于gzip压缩,其中一些文件是大小为20的空文件
当我尝试用dask加载整个目录时,我得到一个pandas.errors.EmptyDataError
。由于我计划每天直接从S3加载这些文件,我想知道是否可以通过dd.read\u csv()
忽略或跳过这些文件。我在dask和pandas的文档中没有找到任何控制错误处理的选项
当然,我可以将所有文件从s3复制到本地硬盘,并在加载到Dask之前扫描并删除所有有问题的文件,但速度会慢一些(复制所有200k文件)
原则上,我只想将所有这些200k CSV文件加载到Dask中,以将它们转换为更少的拼花文件。因此,我甚至不确定Dask是否是实现这一点的最佳工具,但如果有一种简单的方法可以使其工作,我将通过异常实现这一点:
import pandas.io.common
for i in range(0,len(file_paths)):
try:
pd.read_csv(file_paths[i])
except pandas.io.common.EmptyDataError:
print file_paths[i], " is empty"
为什么您需要pandas/dask来实现操作系统工具的功能?我想这已经在OP中了,我不想将200k文件从S3复制到本地磁盘,因为这样做(并行)是非常重要的。正如我所说,它的速度也会变慢,但我不喜欢另一个复制文件和脚本的工具增加复杂性,若可以直接使用Dask的话,它可以消除这种特殊类型的错误。