Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python gzip folder structure when zipping single file

I'm using Python's gzip module to gzip content for a single file, using code similar to the example in the docs:

import gzip
content = "Lots of content here"
f = gzip.open('/home/joe/file.txt.gz', 'wb')
f.write(content)
f.close()

If I open the gz file in 7-zip, I see a folder hierarchy matching the path I wrote the gz to and my content is nested several folders deep, like /home/joe in the example above, or C: -> Documents and Settings -> etc in Windows.

How can I get the one file that I'm zipping to just be in the root of the gz file?

like image 411
FogleBird Avatar asked Dec 18 '22 05:12

FogleBird


2 Answers

It looks like you will have to use GzipFile directly:

import gzip
content = "Lots of content here"
real_f = open('/home/joe/file.txt.gz', 'wb')
f = gzip.GZipFile('file.txt.gz', fileobj=real_f)
f.write(content)
f.close()
real_f.close()

It looks like open doesn't allow you to specify the fileobj separate from the filename.

like image 62
Kathy Van Stone Avatar answered Jan 11 '23 05:01

Kathy Van Stone


You must use gzip.GzipFile and supply a fileobj. If you do that, you can specify an arbitrary filename for the header of the gz file.

like image 40
Aaron Digulla Avatar answered Jan 11 '23 04:01

Aaron Digulla