本示例來自tarfile
文檔。
import tarfile
tar = tarfile.open("sample.tar.gz")
tar.extractall()
tar.close()
首先,使用tarfile.open()
創建tar文件對象,那麼所有文件都使用extractall()
提取和最後的對象被關閉。
如果要提取到不同的目錄,使用extractall
's path
parameter:
tar.extractall(path='/home/connor/')
編輯:(?< 2.5你能更具體)我,現在你使用的是舊版本的Python見它沒有TarFile.extractall()
方法。 documentation for older versions of tarfile證實了這一點。你可以代替做這樣的事情:
for member in tar.getmembers():
print "Extracting %s" % member.name
tar.extract(member, path='/home/connor/')
如果你的tar文件中有目錄,這可能失敗(我沒有測試過)。爲了更完整的解決方案,請參閱Python 2.7 implementation of extractall
編輯2:對於使用舊版本的Python一個簡單的解決方案,使用調用tar commandsubprocess.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)