|
26 | 26 |
|
27 | 27 | import numpy as np |
28 | 28 |
|
| 29 | +import pandas.errors |
29 | 30 | from pandas._libs import lib |
30 | 31 | from pandas._libs.parsers import STR_NA_VALUES |
31 | 32 | from pandas.errors import ( |
@@ -709,8 +710,17 @@ def _read( |
709 | 710 | # Check for duplicates in names. |
710 | 711 | _validate_names(kwds.get("names", None)) |
711 | 712 |
|
712 | | - # Create the parser. |
713 | | - parser = TextFileReader(filepath_or_buffer, **kwds) |
| 713 | + # Check for empty file. |
| 714 | + try: |
| 715 | + # Create the parser. |
| 716 | + parser = TextFileReader(filepath_or_buffer, **kwds) |
| 717 | + except pandas.errors.EmptyDataError: |
| 718 | + if kwds.get("return_empty", False): |
| 719 | + raise |
| 720 | + else: |
| 721 | + print("Empty DataFrame") |
| 722 | + return DataFrame() |
| 723 | + |
714 | 724 |
|
715 | 725 | if chunksize or iterator: |
716 | 726 | return parser |
@@ -832,6 +842,7 @@ def read_csv( |
832 | 842 | float_precision: Literal["high", "legacy", "round_trip"] | None = None, |
833 | 843 | storage_options: StorageOptions | None = None, |
834 | 844 | dtype_backend: DtypeBackend | lib.NoDefault = lib.no_default, |
| 845 | + return_empty: bool = False, |
835 | 846 | ) -> DataFrame | TextFileReader: |
836 | 847 | # locals() should never be modified |
837 | 848 | kwds = locals().copy() |
@@ -968,6 +979,7 @@ def read_table( |
968 | 979 | float_precision: Literal["high", "legacy", "round_trip"] | None = None, |
969 | 980 | storage_options: StorageOptions | None = None, |
970 | 981 | dtype_backend: DtypeBackend | lib.NoDefault = lib.no_default, |
| 982 | + return_empty: bool = False, |
971 | 983 | ) -> DataFrame | TextFileReader: |
972 | 984 | # locals() should never be modified |
973 | 985 | kwds = locals().copy() |
|
0 commit comments