Как мне сжать сжатие строки в Python?

Как мне сжать сжатие строки в Python?

gzip.GzipFile существует, но для файловых объектов - что с помощью простых строк?

Ответ 1

Выберите подходящий модуль из http://docs.python.org/library/archiving.html - либо gzip, либо zlib, в зависимости от ваших конкретных потребностей.

Ответ 2

Если вы хотите создать полную gzip -компактную двоичную строку с заголовком и т.д., вы можете использовать gzip.GzipFile вместе с StringIO:

import StringIO
import gzip
out = StringIO.StringIO()
with gzip.GzipFile(fileobj=out, mode="w") as f:
  f.write("This is mike number one, isn't this a lot of fun?")
out.getvalue()

# returns '\x1f\x8b\x08\x00\xbd\xbe\xe8N\x02\xff\x0b\xc9\xc8,V\x00\xa2\xdc\xcc\xecT\x85\xbc\xd2\xdc\xa4\xd4"\x85\xfc\xbcT\x1d\xa0X\x9ez\x89B\tH:Q!\'\xbfD!?M!\xad4\xcf\x1e\x00w\xd4\xea\xf41\x00\x00\x00'

Ответ 3

Самый простой способ - zlib encoding:

compressed_value = s.encode("zlib")

Затем вы распаковываете его с помощью

plain_string_again = compressed_value.decode("zlib")

Ответ 4

s = "a long string of characters"

g = gzip.open('gzipfilename.gz', 'w', 5) # ('filename', 'read/write mode', compression level)
g.write(s)
g.close()