распаковка файла tar.Z с помощью python? - PullRequest
1 голос
/ 16 февраля 2010

Мне нужно написать скрипт на python, который получает файлы tar.Z с FTP-сервера и распаковывает их на компьютере с Windows. tar.Z, если я правильно понял, является результатом команды compress в Unix.

Кажется, Python не знает, как с этим справиться, это не gz, не bz2 и не zip. Кто-нибудь знает библиотеку, которая бы справилась с этим?

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 16 февраля 2010

Если GZIP - приложение - может справиться с этим, у вас есть два варианта.

  1. Попробуйте библиотеку Python gzip. Это может сработать.

  2. Используйте subprocess Popen для запуска gzip для вас.

Это может быть файл InstallShield .Z. Вы можете использовать InstallShield, чтобы распаковать его и извлечь файл .TAR. Опять же, вы можете использовать subprocess Popen для обработки файла.

Это может быть также "сжатый файл LZW". Посмотрите на эту библиотеку, это может помочь.

http://www.chilkatsoft.com/compression-python.asp

0 голосов
/ 19 февраля 2010

Простой несжатый модуль Python, AFAIK, не существует, но его можно построить, если у вас есть определенные знания:

  • спецификация заголовка формата .Z
  • формат сжатия .Z

Почти всю необходимую информацию можно найти Разархиватор CompressAlgorithm . Дополнительная информация из Википедии для адаптивного LZW и, возможно, сжать справочную страницу .

По сути, вы читаете первые три байта (первые два - магические байты), чтобы изменить ваш алгоритм, а затем начинаете читать и распаковывать.

Есть много битов (файлы .Z начинают иметь 9-битные токены, вплоть до 16-битных, а затем сбрасывают таблицу символов в начальные 256 + 2 значения), что, вероятно, вы будете иметь дело с бинарным операции (&, <<= и т. д.).

0 голосов
/ 16 февраля 2010

Поскольку вы ориентируетесь на конкретную платформу (Windows), простейшим решением может быть запуск gzip в системном вызове: http://www.gzip.org/#exe

Существуют ли в вашем проекте другие требования, которые необходимо выполнить для декомпрессии в Python?

...