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 he
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.
Why not just open the file without specifying a directory hierarchy (just do gzip.open("file.txt.gz"))?. Seems to me like that works. You can always copy the file to another location, if you need to.
If you set your current working directory to your output folder, you can then call gzip.open("file.txt.gz") and the gz file will be created without the hierarchy
import os
import gzip
content = "Lots of content here"
outputPath = '/home/joe/file.txt.gz'
origDir = os.getcwd()
os.chdir(os.path.dirname(outputPath))
f = gzip.open(os.path.basename(outputPath), 'wb')
f.write(content)
f.close()
os.chdir(origDir)
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.