Martin Panter added the comment: If you read the documentation it is clear that gettarfile() requires an OS file, so won’t work with an internal Python-only file object. Maybe the documentation could be tweaked, but I don’t think the gettarfile() implementation should be changed. To me the whole point of it is to call fstat() on the file and fill in the TarInfo attributes appropriately.
Instead, perhaps an enhancement could be made that allowed something like this: metadata = TarInfo.make_file('helloworld.txt', len(b)) tarFileObj.addfile(metadata, io.BytesIO(b)) The corresponding TarInfo class could grow new presets looking something like: class TarInfo: @classmethod def make_file(cls, name, size): # Name and size are mandatory self = cls(name) self.type = REGTYPE self.size = size self.mtime = None # Force addfile() to set it to some default time.time() value self.mode = 0o644 return self @classmethod def make_executable(cls, name, size): ... self.mode = 0o755 ... @classmethod def make_directory(cls, name): ... self.type = DIRTYPE ... def make_hard_link(cls, name, target) def make_symlink(cls, name, target) def make_block_device(cls, name, major, minor) # Set undocumented attributes def make_char_device(cls, name, major, minor) ---------- nosy: +vadmium _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue22208> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com