From fbb6ddcae87be95c791fe91432623f630b7dd956 Mon Sep 17 00:00:00 2001 From: Bahram Farahmand Date: Sat, 29 Mar 2025 10:15:42 +0000 Subject: [PATCH 1/3] Add new parameter to check if file is empty raise error or return empty DataFrame --- pandas/io/parsers/readers.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pandas/io/parsers/readers.py b/pandas/io/parsers/readers.py index 67193f930b4dc..58eda898ce839 100644 --- a/pandas/io/parsers/readers.py +++ b/pandas/io/parsers/readers.py @@ -26,6 +26,7 @@ import numpy as np +import pandas.errors from pandas._libs import lib from pandas._libs.parsers import STR_NA_VALUES from pandas.errors import ( @@ -709,8 +710,17 @@ def _read( # Check for duplicates in names. _validate_names(kwds.get("names", None)) - # Create the parser. - parser = TextFileReader(filepath_or_buffer, **kwds) + # Check for empty file. + try: + # Create the parser. + parser = TextFileReader(filepath_or_buffer, **kwds) + except pandas.errors.EmptyDataError: + if kwds.get("return_empty", False): + raise + else: + print("Empty DataFrame") + return DataFrame() + if chunksize or iterator: return parser @@ -832,6 +842,7 @@ def read_csv( float_precision: Literal["high", "legacy", "round_trip"] | None = None, storage_options: StorageOptions | None = None, dtype_backend: DtypeBackend | lib.NoDefault = lib.no_default, + return_empty: bool = False, ) -> DataFrame | TextFileReader: # locals() should never be modified kwds = locals().copy() @@ -968,6 +979,7 @@ def read_table( float_precision: Literal["high", "legacy", "round_trip"] | None = None, storage_options: StorageOptions | None = None, dtype_backend: DtypeBackend | lib.NoDefault = lib.no_default, + return_empty: bool = False, ) -> DataFrame | TextFileReader: # locals() should never be modified kwds = locals().copy() From 004aaaa66f28f480e67d39ff48fa56da53efbf0c Mon Sep 17 00:00:00 2001 From: Bahram Farahmand Date: Sat, 29 Mar 2025 10:28:52 +0000 Subject: [PATCH 2/3] Remove useless print() --- pandas/io/parsers/readers.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pandas/io/parsers/readers.py b/pandas/io/parsers/readers.py index 58eda898ce839..cf62a2c77db7c 100644 --- a/pandas/io/parsers/readers.py +++ b/pandas/io/parsers/readers.py @@ -718,7 +718,6 @@ def _read( if kwds.get("return_empty", False): raise else: - print("Empty DataFrame") return DataFrame() From d65998331746f319dec894eae02b987b92d108af Mon Sep 17 00:00:00 2001 From: Bahram Farahmand Date: Sat, 29 Mar 2025 10:34:20 +0000 Subject: [PATCH 3/3] Correct condition --- pandas/io/parsers/readers.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pandas/io/parsers/readers.py b/pandas/io/parsers/readers.py index cf62a2c77db7c..e488f088d83a6 100644 --- a/pandas/io/parsers/readers.py +++ b/pandas/io/parsers/readers.py @@ -716,10 +716,8 @@ def _read( parser = TextFileReader(filepath_or_buffer, **kwds) except pandas.errors.EmptyDataError: if kwds.get("return_empty", False): - raise - else: return DataFrame() - + raise if chunksize or iterator: return parser