0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

tarファイル、zipファイルの圧縮展開

Last updated at Posted at 2020-08-25

##tarファイル
###圧縮

tarファイル(英:tar file)とは
tarコマンドを使って作ったアーカイブファイル(1つにまとめたよファイル)
であり拡張子(ファイル名の最後に付く、ファイルの種類を表す目印)が「.tar」なファイル
Mac, Linuxで使われる圧縮方法の一つ

モードは"w:gz"とすることで、ひとまとめにして圧縮できる

qiita.py
import tarfile

with tarfile.open('test.tar.gz',"w:gz") as tr:
    tr.add('test_dir')

実行すると、test.tar.gzが作成される
pythonの中で展開すると

qiita.py
with tarfile.open('test.tar.gz','r:gz') as tr:
    tr.extractall(path='test_tar')

###読み込み
実行するとtest_tarが作成される
extractallを使って全て展開しなくても
extractfileを使ってファイルを指定すればそれだけ読み込める

qiita.py
with tarfile.open('test.tar.gz','r:gz') as tr:
    # tr.extractall(path='test_tar')
    with tr.extractfile('test_dir/sub_dir/sub_test.txt') as f:
        print(f.read())

##zipファイル
###圧縮
z.writeではフォルダしか作らない為
さらに自分でテキストファイルを作る必要がある

qiita.py
import zipfile

with zipfile.ZipFile('test.zip',"w") as z:
    z.write('test_dir')
    z.write('test_dir/test.txt')

*だけだと同じディレクトリだけ
**とすると配下にある全てを見ていく

qiita.py
import zipfile
import zipfile
import glob

with zipfile.ZipFile('test.zip',"w") as z:
    # z.write('test_dir')
    # z.write('test_dir/test.txt')
    for f in glob.glob('test_dir/**',recursive=True):
        print(f)
        z.write(f)

実行結果
test_dirの配下のファイルが出力される

test_dir/
test_dir/sub_dir
test_dir/sub_dir/subsub_dir
test_dir/sub_dir/subsub_dir/subsubu.txt
test_dir/sub_dir/sub_test.txt
test_dir/test.txt

###読み込み
全て読み込む
zzz2が作成されている

qiita.py
with zipfile.ZipFile('test.zip', 'r') as z:
    z.extractall("zzz2")

指定して読み込み

qiita.py
with zipfile.ZipFile('test.zip', 'r') as z:
    with z.open('test_dir/test.txt') as f:
        print(f.read())
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?