Add Pickle Compress
This commit is contained in:
parent
12dcc9b25a
commit
2f6ea35c49
2 changed files with 75 additions and 1 deletions
73
PickleCompress/PickleCompression.py
Normal file
73
PickleCompress/PickleCompression.py
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
import bz2
|
||||||
|
import lzma
|
||||||
|
import gzip
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
|
||||||
|
class CompressPickle:
|
||||||
|
def compress_pickle(self, filename: str, object, compression_mode: str = "none"):
|
||||||
|
self.object = object
|
||||||
|
if "." in filename:
|
||||||
|
filename = filename.split(".")[0]
|
||||||
|
if compression_mode == "gzip":
|
||||||
|
filename = f"{filename}.gz"
|
||||||
|
with gzip.open(filename=filename, mode="wb") as gzfile:
|
||||||
|
pickle.dump(obj=self.object, file=gzfile)
|
||||||
|
elif compression_mode == "bzip2":
|
||||||
|
filename = f"{filename}.bz2"
|
||||||
|
with bz2.open(filename=filename, mode="wb") as bz2file:
|
||||||
|
pickle.dump(obj=self.object, file=bz2file)
|
||||||
|
elif compression_mode == "lzma":
|
||||||
|
filename = f"{filename}.xz"
|
||||||
|
with lzma.open(filename=filename, mode="wb") as lzfile:
|
||||||
|
pickle.dump(obj=self.object, file=lzfile)
|
||||||
|
elif compression_mode == "none":
|
||||||
|
filename = f"{filename}.pickle"
|
||||||
|
with open(filename, mode="wb") as picklefile:
|
||||||
|
pickle.dump(obj=self.object, file=picklefile)
|
||||||
|
else:
|
||||||
|
print("Incorrect Format")
|
||||||
|
|
||||||
|
|
||||||
|
def decompress_pickle(self,filename: str):
|
||||||
|
if "gz" in filename:
|
||||||
|
with gzip.open(filename=filename, mode="rb") as gzfile:
|
||||||
|
self.object = pickle.load(file=gzfile)
|
||||||
|
return self.object
|
||||||
|
elif "bz2" in filename:
|
||||||
|
with bz2.open(filename=filename, mode="rb") as bz2file:
|
||||||
|
self.object = pickle.load(file=bz2file)
|
||||||
|
return self.object
|
||||||
|
elif "xz" in filename:
|
||||||
|
with lzma.open(filename=filename, mode="rb") as lzfile:
|
||||||
|
self.object = pickle.load(file=lzfile)
|
||||||
|
return self.object
|
||||||
|
elif "pickle" in filename:
|
||||||
|
with open(filename, mode="rb") as picklefile:
|
||||||
|
self.object = pickle.load(file=picklefile)
|
||||||
|
return self.object
|
||||||
|
else:
|
||||||
|
print("Incorrect Format")
|
||||||
|
|
||||||
|
|
||||||
|
# Main Code Here
|
||||||
|
def main():
|
||||||
|
a: str = "Test"
|
||||||
|
|
||||||
|
compressor = CompressPickle()
|
||||||
|
# Compress to each mode 'gzip', 'bzip2', and 'lzma'
|
||||||
|
compressor.compress_pickle(filename="a", object=a, compression_mode="gzip")
|
||||||
|
compressor.compress_pickle(filename="a", object=a, compression_mode="bzip2")
|
||||||
|
compressor.compress_pickle(filename="a", object=a, compression_mode="lzma")
|
||||||
|
compressor.compress_pickle(filename="a", object=a)
|
||||||
|
|
||||||
|
# Decompress
|
||||||
|
b = compressor.decompress_pickle(filename="a.gz")
|
||||||
|
c = compressor.decompress_pickle(filename="a.bz2")
|
||||||
|
d = compressor.decompress_pickle(filename="a.xz")
|
||||||
|
e = compressor.decompress_pickle(filename="a.pickle")
|
||||||
|
|
||||||
|
print(a, b, c, d, e)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
|
@ -3,5 +3,6 @@
|
||||||
This repository contains useful programs written in **Python 3.9**. Each folder accompanied with **requirements.txt** for easier dependency access.
|
This repository contains useful programs written in **Python 3.9**. Each folder accompanied with **requirements.txt** for easier dependency access.
|
||||||
|
|
||||||
## Currently Avaiable: ##
|
## Currently Avaiable: ##
|
||||||
* Benchmark Programs : using **psutil** to obtain performance
|
* Benchmark Program : using **psutil** to obtain performance
|
||||||
|
* Pickle Compress Program : compress variable dumps using **gzip**, **bzip2**, **lzma**, or **no compression at all**
|
||||||
* *adding more soon*
|
* *adding more soon*
|
||||||
|
|
Loading…
Reference in a new issue