Rob Nelson <veaviti...@gmail.com> added the comment:
The code referenced in the previous comment only hits for tarfiles built from Streams. The same (incorrect) code exists in the gzip.py library as well, and hits the more common usecase of building a tar.gz from a set of files on disk. def _write_gzip_header(self, compresslevel): self.fileobj.write(b'\037\213') # magic header self.fileobj.write(b'\010') # compression method try: # RFC 1952 requires the FNAME field to be Latin-1. Do not # include filenames that cannot be represented that way. fname = os.path.basename(self.name) if not isinstance(fname, bytes): fname = fname.encode('latin-1') if fname.endswith(b'.gz'): fname = fname[:-3] This effects decompressing the file with 7zip, who respects the FNAME value, and thus attempts to create a new file with the same name as the file its currently decompressing. Or if you extract to another directory, it creates a tar file that is named "foo.tgz", which is confusing to users who are expecting a tar. You can very easily reproduce this: import tarfile f = tarfile.open("test.tgz", mode="w:gz") f.close() and then "extract" the file with 7zip ---------- nosy: +veaviticus _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue44495> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com