Как прочитать конкретную информацию из файлов .txt в файле .tar, не разархивируя ее полностью python3 - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть много (например, 1000) файлов .bz2, каждый из которых (200-50Mb) содержит 4 файла .txt (.dat), как я могу прочитать некоторую конкретную информацию из файлов .txt (dat), не распаковывая их?Я только начинающий пользователь Python 3, поэтому, пожалуйста, дайте мне несколько хитов или, может быть, полезных примеров.Спасибо.

Я сделал код, который на самом деле распаковывает .txt (s) во временную папку, но это занимает около 40 секунд, чтобы обработать 170 Мб tar ... только один ... тогда как у меня тысячи.

import bz2
import os
import tempfile
import shutil

pa = '/home/user/tar' #.tar(s) location
fds = sorted(os.listdir(pa))
i = 0
for bz in fds:
    path = os.path.join(pa, tar)
    i +=1
    archive = bz2.BZ2File(path, 'r')
    tmpdir = tempfile.mkdtemp(dir=os.getcwd())
    bz2.decompress('example.txt', path=tmpdir)
    path_to_my_file = os.path.join(tmpdir, 'example.txt')
    here goes some simple manupulation with my .txt (like print smthg)
    shutil.rmtree(tmpdir)
...