Tarfile создать файл xz

я заметил, что в 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()

person Ulrok    schedule 05.04.2015    source источник


Ответы (1)


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: Сжатие данных в формате XZ с помощью модуля lzma

person Jose Buraschi    schedule 05.04.2015
comment
я пробовал модуль lzma, но python мгновенно закрывается, есть идеи, почему?, также w: xz не работает, что должно быть проблемой моей версии python, я думаю.... - person Ulrok; 05.04.2015
comment
Вы не пишете и не закрываете oFile - person Antti Haapala; 05.04.2015