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 da4479e9d0..76ab497853 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) | 
