diff --git a/doc/whats-new.rst b/doc/whats-new.rst index 1ade92f8588..762317b6e21 100644 --- a/doc/whats-new.rst +++ b/doc/whats-new.rst @@ -80,6 +80,8 @@ Bug fixes By `Jimmy Westling `_. - Numbers are properly formatted in a plot's title (:issue:`5788`, :pull:`5789`). By `Maxime Liquet `_. +- ``open_mfdataset()`` now accepts a single ``pathlib.Path`` object (:issue: `5881`). + By `Panos Mavrogiorgos `_. Documentation ~~~~~~~~~~~~~ diff --git a/xarray/backends/api.py b/xarray/backends/api.py index 6d73946bb59..0cde8ab7315 100644 --- a/xarray/backends/api.py +++ b/xarray/backends/api.py @@ -865,6 +865,8 @@ def open_mfdataset( ) else: paths = sorted(glob(_normalize_path(paths))) + elif isinstance(paths, os.PathLike): + paths = [os.fspath(paths)] else: paths = [str(p) if isinstance(p, Path) else p for p in paths] diff --git a/xarray/tests/test_backends.py b/xarray/tests/test_backends.py index fa088423d18..7657e42ff66 100644 --- a/xarray/tests/test_backends.py +++ b/xarray/tests/test_backends.py @@ -3039,6 +3039,14 @@ def test_open_mfdataset_manyfiles( assert_identical(original, actual) +@requires_netCDF4 +@requires_dask +def test_open_mfdataset_can_open_path_objects(): + dataset = os.path.join(os.path.dirname(__file__), "data", "example_1.nc") + with open_mfdataset(Path(dataset)) as actual: + assert isinstance(actual, Dataset) + + @requires_netCDF4 @requires_dask def test_open_mfdataset_list_attr():