[英]Can pandas read_csv finish gracefully when no file is found?
当我在没有找到文件的情况下搜索 pandas 的 read_csv function 时,我发现很多问题问“如果我的文件存在,为什么找不到?”
我的问题是不同的。 我知道该文件不存在。 因此,当我调用read_csv
时,我得到一个 FileNotFoundError。
我知道除了捕获错误我可以尝试一下,但是有没有一种优雅的方式来指示 function 我不想出错,例如返回空值或不返回空值?
read_csv的工作是读取一个文件,而不是检查它是否存在。 您可以使用pathlib的Path
来做到这一点。 您也可以传递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()
print(df)
Empty DataFrame
Columns: []
Index: []
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.