Adam A. Zajac wrote:
> Hello all,
> 
> I've been working with the tarfile module and just noticed an apparent
> flaw in my own logic.  I wanted to add files to the tar until it neared
> a certain file size.  After every addition I would use
> os.path.getsize().  What I noticed today is that I could add a file to
> the tar without the tar's size changing.  I'm assuming that because the
> TarFile object is not closed, finding its size that way isn't reliable.
> 
> The first thing I tried was using flush(), but TarFile objects
> apparently don't do that.  I also can't close the object and reopen it
> for appending because TarFile objects can't append if the tar is
> compressed.  And finally, I can't predict the compression ratio, so I
> can't merely keep track of the size of the individual files without a
> huge gap to my target size.
> 
> I'm giving up on it for the night.  Anyone have any thoughts?

Something to try, just from looking at the docs and the code:

You can open the output file yourself and pass it to tarfile.open(). 
Then you could use f.tell() to get an idea how many bytes have been 
written. The file-like object being used by the tarfile is stored in its 
fileobj attribute so maybe you can flush that before the tell().

HTH,
Kent
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to