压缩单个文件时的Python gzip文件夹结构
我使用Python的gzip模块为单个文件创建gzip内容,代码类似于文档中的示例:压缩单个文件时的Python gzip文件夹结构,python,gzip,directory,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,或者Windows中的C:->
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,或者Windows中的C:->Documents and Settings->etc
我如何才能将正在压缩的一个文件放在gz文件的根目录中?为什么不在不指定目录层次结构的情况下打开该文件(只需执行gzip.open(“file.txt.gz”)?。在我看来,这很管用。如果需要,您可以随时将文件复制到其他位置。您必须使用并提供
fileobj
。如果这样做,您可以为gz文件头指定任意文件名。看起来您必须直接使用GzipFile
:
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()
似乎
open
不允许您将fileobj
与文件名分开指定。如果您将当前工作目录设置为输出文件夹,则可以调用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)
知道我为什么会犯这个错误吗?AttributeError:'module'对象没有属性'GZipFile'请改为尝试GZipFile。知道我为什么会出现此错误吗?AttributeError:“module”对象没有属性“GZipFile”@ishaniyanage:Python 2或3?它是Python 2,但是我通过在与Python脚本相同的目录中创建gz文件来解决它,然后将其移动到正确的位置。