Tarfile创建xz文件

时间:2015-04-05 02:09:37

标签: python compression tarfile

我注意到tarfile没有w:xz选项或类似的东西,有没有办法创建一个xz文件?我在python中有这个代码

dir=tkFileDialog.askdirectory(initialdir="/home/david")
        if x.get()=="gz":
            tar = tarfile.open(dir+".tar.gz", "w:gz")
            tar
            for i in range(lbox.size()):
                tar.add(e1.get()+"/"+lbox.get(i),arcname=lbox.get(i))
            tar.close()
        if x.get()=="bz":
            tar = tarfile.open(dir+".tar.gz", "w:bz2")
            tar
            for i in range(lbox.size()):
                tar.add(e1.get()+"/"+lbox.get(i),arcname=lbox.get(i))
            tar.close()
        if x.get()=="xz":
            tar = tarfile.open(dir+".tar.gz", "w:gz")
            tar
            for i in range(lbox.size()):
                tar.add(e1.get()+"/"+lbox.get(i),arcname=lbox.get(i))
            tar.close()

1 个答案:

答案 0 :(得分:3)

Python 3.3及更高版本具有您要搜索的选项。

' W:XZ' - 打开lzma压缩写作。

https://docs.python.org/3.3/library/tarfile.html

对于低于3.3的版本,您可以尝试以下

  • 假设您在代码中先前为inputFilename和outputFilename赋值。
  • 请注意,在执行缩进代码后,使用 with 关键字会自动关闭文件

示例代码:

import lzma 

# open input file as binary and read input data
with open(inputFilename, 'rb') as iFile:
    iData = iFile.read()

# compress data
oData = lzma.compress(iData)

# open output file as binary and write compressed data
with open(outputFilename, 'wb') as oFile:
    oFile.write(oData)

我搜索了其他答案,我找到了一个条目,提到将lzma导入python 2.7的问题。您可以在此条目中提供解决方法。

以下是链接 - Python 2.7: Compressing data with the XZ format using the "lzma" module