Магические числа для оценки сжатия файлов LZMA на основе типовPython

Программы на Python
Ответить
Anonymous
 Магические числа для оценки сжатия файлов LZMA на основе типов

Сообщение Anonymous »

Я пишу собственное приложение для передачи файлов (да, я знаю, оно уже существует миллион раз, но для меня это процесс обучения и помогает мне самостоятельно обучаться программированию) на Python. В рамках предварительного обмена файлами я хотел, чтобы клиент оценил сжатый размер данного файла или каталога перед сжатием в .tar с помощью LZMA. Проблема в том, что я не знаю, как оценить размер файла. Я не хочу выполнять сжатие, чтобы получить размер без записи файлов, поскольку это эффективно сожмет файл/папку дважды. Не говоря уже о том, что цель оценки предварительного сжатия состоит в том, чтобы проверить, есть ли на сервере (и клиенте) место для хранения файла перед трудоемким ресурсоемким сжатием. Единственный другой вариант, о котором я знаю, — это магические числа, определенные для угадывания размера, которые выполняются очень быстро и практически не требуют ресурсов.

Код: Выделить всё

def estimateCompressionSize(filePath: Path) -> int:
if filePath.is_dir():
totalSize = 0
for x in filePath.rglob("*"):
totalSize += estimateCompressionSize(x)
return totalSize
ext = filePath.suffix.lower()

if ext in ("a", "b", "c"):
compEstimate = 1.0

elif ext in ("x", "y", "z"):
compEstimate = 0.20

else:
compEstimate = 0.65
return int(filePath.stat().st_size * compEstimate)
Итак, я уже создал итератор предполагаемого сжатия, который просто проверяет типы файлов, считывает текущий размер и делит его на магические числа в зависимости от типа файла, чтобы оценить размер, как вы можете видеть выше. Я просто не знаю, какие магические числа использовать. Я не могу найти в Интернете никакой информации, кроме одного источника с tukaani.org, но там указано только несколько типов файлов, и у меня нет знаний или способностей, чтобы сделать вывод о схожих типах файлов на основе тех, что сделал Тукаани. Я пробовал много-много поисковых запросов в Google, пытался искать здесь, даже пытался спросить ИИ (он просто выплевывал ерунду о психозе, которую я не мог проверить или сохранить), но ничего не нашел.
Итак, мне было интересно, найдет ли здесь какой-нибудь умный человек какие-нибудь ответы для меня?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»