Как узнать, сжимается ли файл

Из набора файлов я создаю файл tar, а из файла tar файл tar.gz (с использованием python).

Создание сжатого файла может занять некоторое время, поэтому:

Я хотел бы знать, есть ли способ узнать, что "процесс создания сжатого файла" "идет".

Может быть, проверка по временному файлу или тому подобное?

Спасибо

1 ответ

Вы можете использовать Python для создания вашего gzip файл (возможно, в другом потоке), чтобы вы могли знать, когда файл создается (и даже получить индикатор прогресса)

Пишите в чанках и в отчете о проделанной работе, так как вы получаете контроль каждый раз, когда записываете кусок файла в сжатый вывод (есть более причудливые индикаторы выполнения, я сделаю простую печать):

import gzip,shutil,os

input_file = "input.tar"
input_size = os.path.getsize(input_file)
chunk_size = 100000
written = 0

with open(input_file,"rb") as fr,gzip.open(input_file+".gz","wb") as fw:
    chunk = fr.read(chunk_size)
    fw.write(chunk)
    written += chunk.size()
    print("Progress {} bytes out of {}".format(written,input_size))

Другое решение будет использовать режим вывода gzip из tarfile использовать библиотеку и использовать индикатор выполнения для файлов, которые пишутся / оставляются для записи (зная, что это не будет точно, если файлы очень разных размеров)

Другие вопросы по тегам