如果csv为空,如何不读取read_csv

时间:2017-02-09 17:33:33

标签: python pandas

使用Python 2.7和Pandas

我必须解析我的目录并绘制一堆CSV。如果CSV为空,则脚本会中断并生成错误消息:

pandas.io.common.EmptyDataError: No columns to parse from file

如果我的文件路径存储在

file_paths=[]

如何阅读每一个并仅绘制非空CSV?如果我将空数据帧定义为df = [],我尝试以下代码

for i in range(0,len(file_paths)):
   if pd.read_csv(file_paths[i] == ""):
      print "empty"
   else df.append(pd.read_csv(file_paths[i],header=None))

3 个答案:

答案 0 :(得分:11)

我会抓住相应的异常,因为在python中不建议使用catch:

onFocusChangeListener()

答案 1 :(得分:2)

您可以使用内置的tryexcept语法跳过返回错误的文件,如下所示:

此处描述:Try/Except in Python: How do you properly ignore Exceptions?

for i in range(0,len(file_paths)):
   try:
       pd.read_csv(file_paths[i])
       ### Do Some Stuff
   except:
       continue
       # or pass

这将尝试读取每个文件,如果不成功则继续读取下一个文件。

答案 2 :(得分:1)

请注意,从熊猫2.02.0(我可以肯定)开始,针对空csv的异常是pandas.errors.EmptyDataError。如果您要导入像import pandas as pd这样的大熊猫,请使用pd而不是pandas

如果您的csv文件名位于数组manyfiles中,则

import pandas as pd
for filename in manyfiles:
    try:
        df = pd.read_csv(filename)

    except pd.errors.EmptyDataError:
        print('Note: filename.csv was empty. Skipping.')
        continue # will skip the rest of the block and move to next file

    # operations on df

我不确定pandas.io.common.EmptyDataError是否仍然有效。在参考文档中找不到它。另外,我也建议您不要使用包罗万象的except:,因为您将无法知道是否是引起问题的其他原因。