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

2024-04-26 05:58:11 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Python2.7和熊猫

我必须解析我的目录并绘制一组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))

Tags: csvio目录脚本消息pandasdfread
3条回答

我只捕获适当的异常,因为在python中不建议使用catch all:

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 0.22.0(我可以肯定),空csv的异常是^{}。如果你要导入熊猫,比如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是否仍然有效。在参考文档中找不到。我也会建议不要一网打尽,因为你不知道是不是其他原因导致了这个问题。

您可以使用内置的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

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

相关问题 更多 >

    热门问题