1

~1GB の *.tbz ファイルがあります。これらの各ファイル内には、最大 9 GB のファイルが 1 つあります。このファイルのヘッダー、つまり最初の 1024 バイトを読み取る必要があるだけです。

処理したいこの1GBのファイルが何百もあるので、これをできるだけ早く実行したいと考えています。抽出には約1分30秒かかります。

完全抽出を使用してみました:

tar = tarfile.open(fn, mode='r|bz2')
for item in tar:
    tar.extract(item)

ただし、速度は向上しtarfile.getmembers()ません。

tar = tarfile.open(fn, mode='r|bz2')
for member in tar.getmembers():
    f = tar.extractfile(member)
    headerbytes = f.read(1024)
    headerdict = parseHeader(headerbytes)

getmembers()メソッドは、そこに常に時間がかかっているものです。

これにできる方法はありますか?

4

2 に答える 2