SSブログ

Windows で tar ファイルを展開する法 [プログラム三昧]このエントリーを含むはてなブックマーク#

先日, python-twitter というモジュールを Windows で使っている Python に入れようと思い立ちました. python-twitter は, http://code.google.com/p/python-twitter/ で配布されている, PythonTwitter API を使用するためのラッパーライブラリです.

tar ファイルを展開せよ

このページの中に,インストール手順が記述されています.

  1. simplejson をインストールする

    simplejson は,私が使っている Python 2.6 には,インストールされているらしいので,OK.

  2. ライブラリファイルをダウンロードする

    リストに並んでいる, python-twitter-0.6-tar.gz をダウンロードしました.

  3. untar して, build, install で,出来上がり

    "untar" ですか? ZIP なら, Windows でも展開できますが.

というわけで, Windows で, ".tar.gz" ファイルを展開する必要ができてしまいました.

ご存じない方のために : ".tar.gz" ファイルとは何ぞや

UNIX の世界では,ディレクトリを丸ごとオープンリールの1/2インチテープに保存して,流通させている時代がありました.そのため,ディレクトリをシーケンシャル・ファイルに書き込むコマンドが用意されていました.それが, tar (tape archives) コマンドです. tar コマンドによって作られたファイルには,慣例として .tar というサフィックスが付けられており,アーカイブすること自体を tar と呼んでいます.

逆に,アーカイブ・ファイルからディレクトリを再構築する場合にも tar コマンドが使用されます.この工程のことを untar と呼んでいます.

tar されたアーカイブ・ファイルは,ディレクトリを丸ごと保存したものなので,巨大なファイルになりがちです.ファイルの大きさは,そのままテープの量に影響するので,流通させるためには,なるべく,サイズの小さなアーカイブ・ファイルに圧縮する必要があります.この圧縮の工程を行うのが, gzip というコマンドで,圧縮されたファイルには, .gz というサフィックスが付けられます.

このように, tar して gzip した状態のファイルに付けられたサフィックスが, ".tar.gz" というわけです.このファイルを展開するときには, gunzip というコマンドで,圧縮前のファイルに戻してから, untar します.

ちなみに,オープンリールテープを流通させていた時代には, compress という圧縮コマンドが使用されており,サフィックスとして, .Z が使用されていました.その時代のライブラリには, ".tar.Z" というサフィックスが良く使われていました.

横着して, untar するには

もちろん, Windows 向けの "gzip" と "tar" を探してきて,インストールすれば,ライブラリを展開することができます.でも,めんどくせ~.他に楽な方法は無いかな?

と,考えていて,ピンときました. Python 自身が, tar ファイルを展開する機能を持っていないかな?調べてみたら,やっぱり,ありましたよ. "tarfile" という名前のライブラリです.マニュアルによると, gzip で圧縮されたファイルもそのまま使えるらしい.これを使って, Python からコマンドを打ち込んで,展開しちゃいましょう.

Python で, .tar.gz を展開する

展開作業をおこなう場所を "C:\Temp" にしました.まず,このディレクトリに,ライブラリ・ファイルを配置します.そして, Python を起動し,カレントディレクトリを移動します.

PythonWin 2.6.4 (r264:75706, Nov  3 2009, 13:23:17) [MSC v.1500 32 bit (Intel)] on win32.
Portions Copyright 1994-2008 Mark Hammond - see 'Help/About PythonWin' for further copyright information.
>>> import os
>>> os.chdir("C:/Temp")

次に, untar します.

>>> import tarfile
>>> tf=tarfile.open("python-twitter-0.6.tar.gz")
>>> tf.extractall()

以上で,展開終了です.サフィックスから判断して,適切に扱ってくれました.

参考文献

Python Cookbook

Python Cookbook

  • 作者:
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2005/05/05
  • メディア: ペーパーバック

この本によると, tarfile.TarFile.open() を使うと書かれていますが,オンラインマニュアルによると, tarfile.open() の方が推奨されています.おそらく, Python のバージョンの違いによるものだと思われます.


nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。