2008年10月14日火曜日

pythonでtar

WSGIの話がちょっと滞ったけど、再開するついでにtarの扱いについて。

tarは、標準配布のtarfileモジュールを使って非常に簡単に扱える。無圧縮のtar、gzip圧縮したtar、bz2圧縮したtarが扱えるようだ。(Python2.5)

tarfile.openで新しいtarファイルを作り、ファイルのフルパスないし相対パス名をどんどんaddしていけばよい。


import os
import tarfile

th = tarfile.open('test.tar', 'w')
#th = tarfile.open('test.tar.bz2', 'w:bz2') <--- こっちを有効にするとbz2圧縮
for root, dirs, files in os.walk(r'c:\windows\media'):
for f in files:
fullpath = os.path.join(root, f)
print fullpath
th.add(fullpath)
th.close()


ファイルを取り出すには、rオプションで開いて、extractでひとつづつ展開する。一度に展開するextactallもあるけど。


import tarfile

th = tarfile.open('test.tar', 'r')
#th = tarfile.open('test.tar.bz2', 'r:bz2')
for item in th:
print item
th.extract(item)
th.close()

0 コメント: