繁体   English   中英

找不到文件时,pandas read_csv 能否正常完成?

[英]Can pandas read_csv finish gracefully when no file is found?

当我在没有找到文件的情况下搜索 pandas 的 read_csv function 时,我发现很多问题问“如果我的文件存在,为什么找不到?”

我的问题是不同的。 我知道该文件不存在。 因此,当我调用read_csv时,我得到一个 FileNotFoundError。

我知道除了捕获错误我可以尝试一下,但是有没有一种优雅的方式来指示 function 我不想出错,例如返回空值或不返回空值?

read_csv的工作是读取一个文件,而不是检查它是否存在。 您可以使用pathlibPath来做到这一点。 您也可以传递Path object t read_csv而不是字符串,这意味着您可以这样做:

from pathlib import Path
import pandas as pd

file=Path("path/to/file.csv")

if file.exists():
    df=pd.read_csv(file)
    ...

如果路径不存在,您必须决定要做什么。 最简单的选择就是不继续处理。

如果调用代码期望它具有特定列,则返回空的 Dataframe 是不够的。 您必须创建一个包含这些列但没有行的 dataframe。

if file.exists():
    df=pd.read_csv(file)
    ...
    return df
else:
    column_names = ["ColA", "ColB", "ColC"]
    return pd.DataFrame(column_names)

“异常处理当发生错误或异常时,Python 通常会停止并生成错误消息。

这些异常可以使用 try 语句处理:"

因为你不想停止你的 function 在我看来唯一的方法是使用 try except。

在您的情况下,这将是这样的:

def function ()
    try:
        df = pd.read_csv('csv name')
    except:
        print("An exception occurred")
    else: 
        df = pd.read_csv('csv name')

您可以使用pandas.DataFrame构造函数捕获错误以返回空的 dataframe。

try:
    df = pd.read_csv('a_non_exsiting_file.csv')

except FileNotFoundError:
    df = pd.DataFrame()

#Output:

print(df)

Empty DataFrame
Columns: []
Index: []

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM