Как я могу повторно сжать этот файл, чтобы он соответствовал оригиналу?Python

Программы на Python
Anonymous
Как я могу повторно сжать этот файл, чтобы он соответствовал оригиналу?

Сообщение Anonymous »

Я использую WindLDR для создания лестничных диаграмм ПЛК. Файлы сохраняются как имя_файла.pjw
Я написал небольшой скрипт Python для распаковки файлов pjw, но теперь хочу их повторно сжать. Однако вывод файла отличается, и я не знаю, как это исправить.
Вот как отображается исходный формат сжатого файла. Из файловой утилиты Linux:

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

$ file project01OG.pjw
project01OG.pjw: gzip compressed data, from TOPS/20, original size modulo 2^32 314621
Сценарий сжатия выдает следующее:

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

$ file project01.pjw
project01.pjw: gzip compressed data, was "project01.pjw", max compression, original size modulo 2^32 314621
Это похоже, но не хватает деталей TOPS/20.
Сценарий распаковки:

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

#!/usr/bin/env python3
import gzip
import shutil

input_file = 'project01.pjw'
output_file = 'project01'

with gzip.open(input_file, 'rb') as f_in:
with open(output_file, 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
Скрипт сжатия:

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

#!/usr/bin/env python3
import gzip
import shutil
input_file = 'project01'
output_file = 'project01.pjw'

with open(input_file, 'rb') as f_in:
with gzip.GzipFile(output_file, 'wb', mtime=0) as f_out:
shutil.copyfileobj(f_in, f_out)
Поэтому я не уверен, как реализовать бит сжатия TOPS/20.
Я пытался спросить ChatGPT, но он говорит что-то вроде отредактируйте полученный вывод файла в шестнадцатеричном редакторе, так что... Я этого не делаю.
Я могу дать ссылку на файл pjw или на вывод распакованного файла, если это поможет.

Подробнее здесь: https://stackoverflow.com/questions/788 ... e-original

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