diff --git a/fsspec/core.py b/fsspec/core.py index 8515de640..ac65c7a16 100644 --- a/fsspec/core.py +++ b/fsspec/core.py @@ -204,6 +204,12 @@ def __exit__(self, *args): break [s.__exit__(*args) for s in self] + def __getitem__(self, item): + out = super().__getitem__(item) + if isinstance(item, slice): + return OpenFiles(out, mode=self.mode, fs=self.fs) + return out + def __repr__(self): return "" % len(self) diff --git a/fsspec/tests/test_core.py b/fsspec/tests/test_core.py index 23a2cddf4..d4cb6362d 100644 --- a/fsspec/tests/test_core.py +++ b/fsspec/tests/test_core.py @@ -184,6 +184,8 @@ def test_multi_context(tmpdir): assert isinstance(files, OpenFiles) assert isinstance(files[0], OpenFile) assert len(files) == 2 + assert isinstance(files[:1], OpenFiles) + assert len(files[:1]) == 1 with files as of: assert len(of) == 2 assert not of[0].closed