0
のために動作しません。私はすべてのタールを抽出するためにPythonで小さなスクリプトを書きたいtarファイルが.gzというファイル
tarfile.tar.gz
--tar1.gz
--tar1.txt
--tar2.gz
--tar3.gz
の形でネストされたtarファイルを持っているフォルダと同じ順番にして最初の横幅すなわちtar1.txtは/ tarファイル/ TAR1に
をあるべきここでのスクリプトは、
#!/usr/bin/python
import os
import re
import tarfile
data = os.path.join(os.getcwd(), 'data')
dirs = [data]
while len(dirs):
dirpath = dirs.pop(0)
for subpath in os.listdir(dirpath):
if not re.search('(.tar)?.gz$', subpath):
continue
with tarfile.open(os.path.join(dirpath, subpath)) as tarf:
tarf.extractall(path=dirpath)
for subpath in os.listdir(dirpath):
newpath = os.path.join(dirpath, subpath)
if os.path.isdir(newpath):
dirs.append(newpath)
elif dirpath != data or os.path.islink(newpath):
os.remove(newpath)
だが、私は、スクリプトを実行するとき、私は次のエラーを取得する:
Traceback (most recent call last):
File "./extract.py", line 16, in <module>
with tarfile.open(os.path.join(dirpath, subpath)) as tarf:
File "/usr/lib/python2.7/tarfile.py", line 1678, in open
raise ReadError("file could not be opened successfully")
tarfile.ReadError: file could not be opened successfully
'.tar.gz'ファイルは正しく抽出されますが、ネストされた '.gz'ファイルは抽出されません。ここに何がありますか? tarfileモジュールは.gzファイルを処理しませんか?
IOWでは、 '.tar.gz'を扱うのは単なる便宜です。 gzipされたファイルを読みたいなら、 'gzip'モジュールを使う必要があります。 –
右ありがとう、私はこれを読む必要があります。 – abhipil