5

I have many files with the extension "tar.bz2" and I want to uncompress them. So I use the "tarfile" module as explained here : https://docs.python.org/3/library/tarfile.html.

I try the following code :

import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
for i in tar:
  tar.extractall(i)
tar.close()

But nothing happens : the tar.bz2 file has not been uncompressed into the folder "path_to/test/".

Would you have any ideas ?
Thanks !

Matt
  • 27,170
  • 6
  • 80
  • 74
Julien
  • 699
  • 3
  • 14
  • 30

2 Answers2

18

You use tar.extractall with wrong argument. I think, you need something like this

import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
tar.extractall()
tar.close()

or

import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
for i in tar:
  tar.extractfile(i)
tar.close()

If you need to extract files to some specific folder

import tarfile
tar = tarfile.open("path_to/test/sample.tar.bz2", "r:bz2")  
tar.extractall(some_path)
tar.close()
kvorobiev
  • 5,012
  • 4
  • 29
  • 35
5

I like the context manager:

import tarfile

def extract_bz2(filename, path="."):
    with tarfile.open(filename, "r:bz2") as tar:
        tar.extractall(path)
mja
  • 1,273
  • 1
  • 20
  • 22