我〜1GB * .tbz的文件。在每个文件里面都有一个〜9GB的文件。我只需要读取这个文件的头部,前1024个字节。阅读里面tar文件大文件头(〜9GB)不足额提取
我想,因为我有数百个这样的文件1GB我要处理这个要做到这一点尽可能快。它需要大约1分30秒的时间来提取。
我试着用足额提取:
tar = tarfile.open(fn, mode='r|bz2')
for item in tar:
tar.extract(item)
和tarfile.getmembers()
但没有速度imprevement:
tar = tarfile.open(fn, mode='r|bz2')
for member in tar.getmembers():
f = tar.extractfile(member)
headerbytes = f.read(1024)
headerdict = parseHeader(headerbytes)
的getmembers()
方法是什么把所有的时间在那里。
有什么办法,我可以这样做呢?
你能展示一个你需要解析的样本头吗? –
你可以使用[BZ2File](https://docs.python.org/2/library/bz2.html#bz2.BZ2File)来读出一个块吗?也许你可以完全跳过'tar'部分。 – bbayles
谢谢!这工作!你想发布一个完整的答案? f = bz2.BZ2File(fn); f.seek(512); headerbytes = f.read(1024); headerdict = parseHeader(headerbytes) – roho