2014-10-28 17 views
0

我有一個用Python編寫的應用程序,它存儲許多基本數據類型的列表(int,float等),而這些列表很少被訪問。我正在尋找一些可以在進一步處理之前壓縮這些數據的庫。在Python中壓縮任意數據結構的庫

我看着gzip和其他類似的庫。在我看來,他們都用絃樂。這是爲什麼?將LZ77應用於int列表而不是字符列表時是否有任何限制?

在那裏有一個python庫,會做我想要的嗎?

+0

好吧,你可以壓縮整數字符(也許與'struct.pack' ...然後gzip的字符或東西 – 2014-10-28 21:34:29

+0

這應該工作,但我想知道是否有一個更根本的原因,他們只是壓縮字符串。如果我使用struct.pack,它會像壓縮原始二進制數據一樣高效嗎? – igon 2014-10-28 21:36:51

+0

原始二進制數據可能是什麼結構包會產生...原始二進制數據是你應該gzip – 2014-10-28 21:39:12

回答

0

如果你有python 3.4,你可以用lzma library來做到這一點。

如果你是在Python 2.7中,你可以使用bz2庫來壓縮內存中的數據。

鏈接中的示例看起來不錯,所以我不會在這裏重新編寫它們。

+0

我想壓縮數據在內存中。 – igon 2014-10-29 00:24:05

+0

@igon,更新回答。 – DuckPuncher 2014-10-29 00:57:38

+0

它仍然需要數據爲str格式.. – igon 2014-10-30 22:15:34

1

您將首先需要使用pickle or cPickle序列化Python對象,該對象會將其轉換爲一系列字節。然後,您可以使用任何壓縮機(例如zlib)對其進行壓縮。然後,您可以使用zlib和pickle將數據轉換回對象。 pickle和zlib都可以在內存中工作。