Как узнать, сжимается ли файл - PullRequest
0 голосов
/ 16 мая 2018

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

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

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

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

Спасибо

1 Ответ

0 голосов
/ 16 мая 2018

вы можете использовать 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 и использовать индикатор выполнения для файлов, которые пишутся / оставляются для записи (зная, что это не будет точно, если файлы очень разных размеров )

...