11

Here is what I have:

import bz2 compressionLevel = 9 source_file = '/foo/bar.txt' #this file can be in a different format, like .csv or others... destination_file = '/foo/bar.bz2' tarbz2contents = bz2.compress(source_file, compressionLevel) fh = open(destination_file, "wb") fh.write(tarbz2contents) fh.close() 

I know first param of bz2.compress is a data, but it's the simple way that I found to clarify what I need.

And I know about BZ2File but, I cannot find any good example to use BZ2File.

1 Answer 1

15

The documentation for bz2.compress for says it takes data, not a file name.
Try replacing the line below:

tarbz2contents = bz2.compress(open(source_file, 'rb').read(), compressionLevel) 

...or maybe :

with open(source_file, 'rb') as data: tarbz2contents = bz2.compress(data.read(), compressionLevel) 
Sign up to request clarification or add additional context in comments.

2 Comments

Great @Gerrat! the first option worked for me. Thanks!
I do not think the second option is strictly correct. I think it should be with open(source_file, 'rb') as data: tarbz2contents = bz2.compress(data.read(), compressionLevel)

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.