diff --git a/src/xopen/__init__.py b/src/xopen/__init__.py index 8794619..ce56f08 100644 --- a/src/xopen/__init__.py +++ b/src/xopen/__init__.py @@ -301,6 +301,8 @@ def close(self) -> None: super().close() if not hasattr(self, "process"): # Exception was raised during __init__ + if hasattr(self, "_stderr"): + self._stderr.close() return if "r" not in self._mode: self._file.close() @@ -381,6 +383,8 @@ def _raise_if_error( raise OSError("{!r} (exit code {})".format(stderr_message, retcode)) def _read_error_message(self): + if self._stderr.closed: + return b"" self._stderr.flush() self._stderr.seek(0) return self._stderr.read()