🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

2607閲覧

同じディレクトリ内にある複数のtarファイルを解凍したい

selva604

総合スコア14

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/01/07 10:41

編集2021/01/08 06:18

前提・実現したいこと

ディレクトリ内に複数のtarファイルがあります.
例としてフォルダA の中にP01.tar,P02.tarとあるとき,P01フォルダを作り,その中にP01.tarの中身を入れたいです.

pythonで書いたみましたが,エラーも出ず,解凍もされませんでした.
できるならLinuxコマンドでも構いません.よろしくお願いします.

該当のソースコード

python

1import tarfile 2path = "A/P01.tar" 3with tarfile.open(path) as t: 4 t.extractall(path = 'P01')

追記

すみません,言葉足らずでした.
例としてフォルダA の中にP01.tar,P02.tarとあるとき,それぞれP01,P02フォルダを作り,それに対応した.tarの中身を入れたいということでお願いします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ppaul

2021/01/08 06:50

回答を追加しました。 質問を出すときには、なるべく自分のやりたいことをはっきりと書くようにしましょう。 selva604さんのソースコードに複数のファイルが書いてあれば、欲しい答えにより速く到達できますよ。
selva604

2021/01/08 07:30

ご指摘ありがとうございます,以後気をつけます.
guest

回答3

0

コマンドで。

sh

1mkdir P01 2tar xvf P01.tar -C P01

何十個もあって、1ファイルずつコマンドを打つのが面倒と言うことなら、

sh

1for file in *.tar 2do dir=%{file%.tar} 3 mkdir $dir 4 tar xvf $file -C $dir 5done

投稿2021/01/07 10:49

編集2021/01/07 12:01
otn

総合スコア85890

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

みなさんの参考にさせて頂き,自己解決いたしました.ありがとうございました.^^

python

1import tarfile 2import glob 3import os 4 5def untar_(tar_path,save_path): 6 with tarfile.open(tar_path,"r") as t: 7 t.extractall(path = save_path) 8 9if __name__ == "__main__": 10 dir = "A/" 11 for tar_path in glob.glob(dir+"*.tar"): 12 name = os.path.split(tar_path)[1].split(".tar")[0] 13 untar_(tar_path,dir + name)

投稿2021/01/08 07:40

selva604

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

tarfile.openの第二引数を省略すると空のTarFileインスタンスが生成されます。
従って、t.extractallは何もしません。

既存のファイルを読み込む場合は第二引数に'r'を入れてください。

shell

1$ ls 2A exttar.py 3$ tar -tf A/P01.tar 4a.txt 5b.txt 6$ cat exttar.py 7import tarfile 8 9path = "A/P01.tar" 10with tarfile.open(path, 'r') as t: 11 t.extractall(path = 'P01') 12 13$ python exttar.py 14$ ls 15A P01 exttar.py 16$ ls P01 17a.txt b.txt

P01.tarとP02.tarなら以下です。

python

1$ ls A 2P01.tar P02.tar 3$ cat exttar.py 4import os 5import tarfile 6 7path = "A" 8filelist = ["P01.tar", "P02.tar"] 9for file in filelist: 10 with tarfile.open(path+"/"+file, 'r') as t: 11 t.extractall(path = os.path.splitext(file)[0]) 12 13$ python exttar.py 14$ ls P01 15a.txt b.txt 16$ ls P02 17c.txt d.txt

Aの下にあるtarファイルの一覧を作りたければ、通常通りglobを使ってください。

投稿2021/01/08 01:09

編集2021/01/08 06:47
ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問