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

新手上路,请多包涵

使用 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))

原文由 Devin Liner 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 670
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

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

原文由 Chuck 发布,翻译遵循 CC BY-SA 3.0 许可协议

我只会捕获适当的异常,因为在 python 中不建议捕获所有异常:

 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"

原文由 Zeugma 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题