Pythonの組み込みライブラリに問題がありますgzip
。それに関する他のほとんどすべてのスタックの質問を調べましたが、どれも機能していないようです。
私の問題は、私が減圧しようとすると、IOError
私が得ている:
Traceback (most recent call last):
File "mymodule.py", line 61, in
return gz.read()
File "/usr/lib/python2.7/gzip.py", line 245,
readself._read(readsize)
File "/usr/lib/python2.7/gzip.py", line 287, in
_readself._read_gzip_header()
File "/usr/lib/python2.7/gzip.py", line 181, in
_read_gzip_header
raise IOError, 'Not a gzipped file'IOError: Not a gzipped file
これはネットワーク経由で送信するための私のコードです。なぜ私が物事を行うのか意味がないかもしれませんが、通常はwhileループでメモリ効率が高く、単純化しただけです。
buffer = cStringIO.StringIO(output) #output is from a subprocess call
small_buffer = cStringIO.StringIO()
small_string = buffer.read() #need a string to write to buffer
gzip_obj = gzip.GzipFile(fileobj=small_buffer,compresslevel=6, mode='wb')
gzip_obj.write(small_string)
compressed_str = small_buffer.getvalue()
blowfish = Blowfish.new('abcd', Blowfish.MODE_ECB)
remainder = '|'*(8 - (len(compressed_str) % 8))
compressed_str += remainder
encrypted = blowfish.encrypt(compressed_str)
#i send it over smb, then retrieve it later
次に、これを取得するコードは次のとおりです。
#buffer is a cStringIO object filled with data from retrieval
decrypter = Blowfish.new('abcd', Blowfish.MODE_ECB)
value = buffer.getvalue()
decrypted = decrypter.decrypt(value)
buff = cStringIO.StringIO(decrypted)
buff.seek(0)
gz = gzip.GzipFile(fileobj=buff)
return gz.read()
ここに問題があります
return gz.read()