У меня есть файлы ~ 1GB * .tbz. Внутри каждого из этих файлов имеется один файл размером ~ 9 ГБ. Мне просто нужно прочитать заголовок этого файла, первые 1024 байта.Прочитать большой заголовок файла (~ 9 ГБ) внутри tarfile без полной извлечения
Я хочу, чтобы это сделало это как можно быстрее, поскольку у меня есть сотни этих 1GB-файлов, которые я хочу обработать. Для извлечения требуется около 1 м3.
Я попытался с помощью полного извлечения:
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