pandas的read_csv函数在文件不存在时能否优雅执行?
如何让pandas的read_csv在文件不存在时返回None/空值而非抛出错误
针对你明确知道文件不存在、希望read_csv不抛出FileNotFoundError而是返回空值/None的需求,这里有两种实用方案:
方案1:封装异常处理的安全读取函数
把try-except逻辑封装成复用函数,既保持代码整洁,又能覆盖所有文件不存在的场景(包括检查文件后被删除的竞态情况):
import pandas as pd def safe_read_csv(file_path, **kwargs): try: return pd.read_csv(file_path, **kwargs) except FileNotFoundError: return None # 若需要空DataFrame,替换为 return pd.DataFrame()
调用时和原生read_csv完全一致,额外参数也能正常传递:
df = safe_read_csv("missing_file.csv", sep=";", header=0)
方案2:先检查文件存在性再读取
用现代的pathlib或传统的os.path先判断文件是否存在,再决定是否调用read_csv:
用pathlib(推荐)
from pathlib import Path import pandas as pd file_path = Path("missing_file.csv") df = pd.read_csv(file_path) if file_path.is_file() else None
用os.path
import os import pandas as pd df = pd.read_csv("missing_file.csv") if os.path.isfile("missing_file.csv") else None
注意:这种方法存在竞态条件——如果检查文件存在后,到调用
read_csv前文件被删除,仍会抛出错误。但如果是你明确知晓文件不存在的场景,这个问题可以忽略。
两种方案对比:方案1更可靠,能处理所有文件不存在的情况;方案2代码更简洁,适合确定文件状态不会变化的场景。
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

