Tarfile创建xz文件

5
我注意到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个回答

6
Python 3.3及以上版本提供了您正在寻找的选项。
'w:xz' -- 打开以lzma压缩写入的文件。

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

对于低于3.3版本的Python,您可以尝试以下操作:

  • 假设您在代码中之前为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)

我搜索了其他答案,发现有一篇文章提到了在Python 2.7中导入lzma时出现的问题。该条目提供了一个解决方法,您可以按照此方法操作。

这是链接 - Python 2.7:使用“lzma”模块以XZ格式压缩数据


我已经尝试过 lzma 模块,但 Python 立即关闭了,有什么想法吗?另外,w:xz 不起作用,这可能是我的 Python 版本的问题,我猜是这样的... - Ulrok
你没有写入并关闭 oFile。 - Antti Haapala -- Слава Україні

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接