我正在使用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文件的根目录中?
答案 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)