【问题标题】:Extract tar.gz{some integer} in python在 python 中提取 tar.gz{some integer}
【发布时间】:2021-12-30 20:31:19
【问题描述】:

我正在尝试使用这种格式提取文件名--> filename.tar.gz10

我已经尝试过多种方式,但对于所有方式,我都得到了未知格式的错误。它适用于以 tar.gz00 结尾的文件。我尝试更改名称,但仍然无法正常工作。

这是我尝试过的,

import tarfile
  
file = tarfile.open('filename.tar.gz10')

file.extractall('./extracted_path')
  
file.close()

另一种方法是,

shutil.unpack_archive('./filename.tar.gz10', './extracted_path', 'tar.gz17')

提前感谢您的帮助。

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    这是因为存档被分成了更小的块,在 linux 上你可以使用split -b 命令这样做,所以一个大文件现在实际上是多个较小的文件,它们的命名如下

    file.tar.gz01
    file.tar.gz02
    file.tar.gz03
    file.tar.gz04
    etc...
    

    您将无法单独解压缩这些文件,因此您必须先将它们连接成一个文件,然后再解压缩。

    要验证它是否被拆分,请运行 file {filename},如果不将其识别为 gzip 压缩存档,则它可能已拆分(这就是您收到未知格式错误的原因)

    您可以尝试执行以下操作:

    from glob import glob
    import os
     
    path = '/path/to/' # location of your files
    list_of_files = glob(path + '*.tar.gz*') # list all gzip files
     
    bash_command = 'gzip -dk filename.tar.gz' + ' '.join(list_of_files) # create bash command to concatenate the files
    os.system(bash_command)
    
    

    【讨论】:

    • 它返回1。所以所有文件都在一个目录中,它不会连接文件。
    猜你喜欢
    • 1970-01-01
    • 2017-12-21
    • 2018-06-06
    • 2016-09-25
    • 2013-01-02
    • 1970-01-01
    • 2020-12-04
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多