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.
I would say it's possible, by playing with TarInfo e TarFile.addfile passing a StringIO as a fileobject.
Very rough, but 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()
As Stefano pointed out, you can use TarFile.addfile
and StringIO
.
import tarfile, StringIO data = 'hello, world!' tarinfo = tarfile.TarInfo('test.txt') tarinfo.size = len(data) tar = tarfile.open('test.tar', 'a') tar.addfile(tarinfo, StringIO.StringIO(data)) tar.close()
You'll probably want to fill other fields of tarinfo
(e.g. mtime
, uname
etc.) as well.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With