首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果csv为空,如何不执行read_csv

如果csv为空,如何不执行read_csv
EN

Stack Overflow用户
提问于 2017-02-10 01:33:33
回答 3查看 24.5K关注 0票数 19

使用Python 2.7和Pandas

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

代码语言:javascript
复制
pandas.io.common.EmptyDataError: No columns to parse from file

如果我将我的文件路径存储在

代码语言:javascript
复制
file_paths=[]

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

代码语言:javascript
复制
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))
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-10 01:35:57

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

在这里描述:Try/Except in Python: How do you properly ignore Exceptions?

代码语言:javascript
复制
for i in range(0,len(file_paths)):
   try:
       pd.read_csv(file_paths[i])
       ### Do Some Stuff
   except:
       continue
       # or pass

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

票数 7
EN

Stack Overflow用户

发布于 2017-02-10 01:38:43

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

代码语言:javascript
复制
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"
票数 29
EN

Stack Overflow用户

发布于 2018-07-08 17:43:03

注意,对于pandas 0.22.0 (我可以肯定),对于空csv抛出的异常是pandas.errors.EmptyDataError。如果您正在导入像import pandas as pd这样的熊猫,那么使用pd而不是pandas

如果csv文件名在数组manyfiles中,那么

代码语言:javascript
复制
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:,因为你不知道是不是其他原因导致了这个问题。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42143249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档