代码之家  ›  专栏  ›  技术社区  ›  FogleBird

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

  •  4
  • FogleBird  · 技术社区  · 16 年前

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

    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:->文档和设置->等。

    我如何才能得到一个压缩到gz文件根目录的文件?

    4 回复  |  直到 13 年前
        1
  •  10
  •   Kathy Van Stone    16 年前

    看起来你得用 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。

        2
  •  2
  •   Aaron Digulla    16 年前

    你必须使用 gzip.GzipFile 供应A fileobj .如果这样做,可以为gz文件的头指定任意文件名。

        3
  •  0
  •   Edan Maor    16 年前

    为什么不直接打开文件而不指定目录层次结构(只做gzip.open(“file.txt.gz”))?在我看来,这是可行的。如果需要,您可以随时将文件复制到其他位置。

        4
  •  0
  •   SaoPauloooo    13 年前

    如果将当前工作目录设置为输出文件夹,则可以调用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)
    
    推荐文章