diff options
Diffstat (limited to 'Lib/gzip.py')
-rw-r--r-- | Lib/gzip.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Lib/gzip.py b/Lib/gzip.py index da4479e..76ab497 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -49,7 +49,7 @@ def open(filename, mode="rb", compresslevel=9, raise ValueError("Argument 'newline' not supported in binary mode") gz_mode = mode.replace("t", "") - if isinstance(filename, (str, bytes)): + if isinstance(filename, (str, bytes, os.PathLike)): binary_file = GzipFile(filename, gz_mode, compresslevel) elif hasattr(filename, "read") or hasattr(filename, "write"): binary_file = GzipFile(None, gz_mode, compresslevel, filename) @@ -165,6 +165,8 @@ class GzipFile(_compression.BaseStream): filename = getattr(fileobj, 'name', '') if not isinstance(filename, (str, bytes)): filename = '' + else: + filename = os.fspath(filename) if mode is None: mode = getattr(fileobj, 'mode', 'rb') @@ -357,10 +359,10 @@ class GzipFile(_compression.BaseStream): if offset < self.offset: raise OSError('Negative seek in write mode') count = offset - self.offset - chunk = bytes(1024) + chunk = b'\0' * 1024 for i in range(count // 1024): self.write(chunk) - self.write(bytes(count % 1024)) + self.write(b'\0' * (count % 1024)) elif self.mode == READ: self._check_not_closed() return self._buffer.seek(offset, whence) |