Как мне накачать пакеты LZW?Есть ли библиотека?
Я пытался раздувать и декодировать поток EMWIN Национальной метеорологической службы в python.
Требуется, чтобы пакеты были разархивированы из формата PKUNZIP, поэтому в нем говорится.
Я исследовал и обнаружил, что PKZIP близок или является LZW.Но я не могу найти какую-либо библиотеку, чтобы использовать это.
ZLIB - это gzip, который является LZ77, и в библиотеке LZW для кодирования Хаффмана нет документации, которую я могу найти, и для этого найденного фрагмента требуется, чтобы данные представляли собой какой-то список
Это то, с чем я работал до сих пор.не возражайте против возни
import socket
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.connect(("1.pool.iemwin.net", 2211))
sck.send("")
data = sck.recv(1116)
sck.close()
def decompress(compressed):
"""Decompress a list of output ks to a string."""
from cStringIO import StringIO
# Build the dictionary.
dict_size = 256
dictionary = dict((i, chr(i)) for i in xrange(dict_size))
# in Python 3: dictionary = {i: chr(i) for i in range(dict_size)}
# use StringIO, otherwise this becomes O(N^2)
# due to string concatenation in a loop
result = StringIO()
w = chr(compressed.pop(0))
result.write(w)
for k in compressed:
if k in dictionary:
entry = dictionary[k]
elif k == dict_size:
entry = w + w[0]
else:
raise ValueError('Bad compressed k: %s' % k)
result.write(entry)
# Add w+entry[0] to the dictionary.
dictionary[dict_size] = w + entry[0]
dict_size += 1
w = entry
return result.getvalue()
new = decompress(data)
print new
Документация для всего протокола такова: https://www.nws.noaa.gov/emwin/winpro.htm
^^^ Это почти все, что я мог найти