压缩单个文件时的Python gzip文件夹结构

时间:2009-09-23 14:18:58

标签: python gzip directory

我正在使用Python的gzip模块为单个文件gzip内容,使用的代码类似于文档中的示例:

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

如果我用7-zip打开gz文件,我看到一个文件夹层次结构与我编写的gz路径相匹配,我的内容嵌套了几个文件夹,如上例中的/ home / joe,或者C: - >文件和设置 - >在Windows中等。

如何才能将我正在压缩的文件放在gz文件的根目录中?

4 个答案:

答案 0 :(得分:10)

您似乎必须直接使用GzipFile

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

看起来open不允许您指定与文件名分开的fileobj。

答案 1 :(得分:2)

您必须使用gzip.GzipFile并提供fileobj。如果这样做,您可以为gz文件的标题指定任意文件名。

答案 2 :(得分:0)

为什么不在不指定目录层次结构的情况下打开文件(只需执行gzip.open(“file.txt.gz”))?对我而言似乎是有效的。如果需要,您始终可以将文件复制到其他位置。

答案 3 :(得分:0)

如果将当前工作目录设置为输出文件夹,则可以调用gzip.open(“file.txt.gz”)并创建不带层次结构的gz文件

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)