Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I extract a tar file using python 2.4?

Tags:

python

tar

I'm trying to extract a .tar file completely using python 2.4.2 and because of this not all of the aspects of the tarfile module are usable. I've looked through the python documentary and I have not found it to be helpful as I continue to make syntax errors. The following are commands I have tried(to no success):

tarfile.Tarfile.getnames(tarfile.tar)
tarfile.Tarfile.extract(tarfile.tar)

Is there a simple way to extract my tar completely? If so what is the formatting used? Also, I'd like to note that tarfile.TarFile.extractall() is not available in my python version.

like image 665
Connor Tepfer Avatar asked Jul 01 '15 14:07

Connor Tepfer


People also ask

How do I unzip a tar file in Python?

You can use the tarfile module to read and write tar files. To extract a tar file, you need to first open the file and then use the extract method of the tarfile module.

Can you extract a tar file?

Simply right-click the item you want to compress, mouseover compress, and choose tar. gz. You can also right-click a tar. gz file, mouseover extract, and select an option to unpack the archive.


Video Answer


1 Answers

This example is from the tarfile docs.

import tarfile
tar = tarfile.open("sample.tar.gz")
tar.extractall()
tar.close()

First, a TarFile object is created using tarfile.open(), then all files are extracted using extractall() and finally the object is closed.

If you want to extract to a different directory, use extractall's path parameter:

tar.extractall(path='/home/connor/')

Edit: I see now that you are using an old Python version which doesn't have the TarFile.extractall() method. The documentation for older versions of tarfile confirms this. You can instead do something like this:

for member in tar.getmembers():
    print "Extracting %s" % member.name
    tar.extract(member, path='/home/connor/')

If your tar file has directories in it, this probably fails (I haven't tested it). For a more complete solution, see the Python 2.7 implementation of extractall

Edit 2: For a simple solution using your old Python version, call the tar command using subprocess.call

import subprocess
tarfile = '/path/to/myfile.tar'
path = '/home/connor'
retcode = subprocess.call(['tar', '-xvf', tarfile, '-C', path])
if retcode == 0:
    print "Extracted successfully"
else:
    raise IOError('tar exited with code %d' % retcode)
like image 121
André Laszlo Avatar answered Sep 23 '22 11:09

André Laszlo