pythonfilefile-iotar

python write string directly to tarfile


Is there a way to write a string directly to a tarfile? From http://docs.python.org/library/tarfile.html it looks like only files already written to the file system can be added.


Solution

  • I would say it's possible, by playing with TarInfo and TarFile.addfile passing a StringIO as a fileobject.

    Very rough, but it works

    import tarfile
    import StringIO
    
    tar = tarfile.TarFile("test.tar","w")
    
    string = StringIO.StringIO()
    string.write("hello")
    string.seek(0)
    info = tarfile.TarInfo(name="foo")
    info.size=len(string.buf)
    tar.addfile(tarinfo=info, fileobj=string)
    
    tar.close()