1:python2.7 有一个很让人难受的特性,那就是经过其方法处理的数据,有可能原来是Str类型结果变成了unicode
2:大家注意我画出来的红色的部分,如果你发现你的代码完全正确却解压失败压缩失败,很可能在红色部分你传入的不是
String类型,而是unicode类型,在这里说一下我遇到的问题:在实际生产中,我另一个查询数据库的程序
c_Data=SearchTable.TableClass().searchCsvString("e_cdr_20181228") c_Data是这个程序返回的数据,我用的是 “+”拼接的数据,纳希冉而言我就以为是String了,于是直接调用了gzip_compress(c_data) 结果报错,检查本田没发现程序有问题,最后定位到数据,果然我type(c_Data) 是unicode类型,此时就简单了 gzip_compress(str(c_data)) 大功告成。
3:以上是在py2.7开发遇到的问题,因为公司需要,没用py3+版本
1:第一种: with gzip.open('file.txt.gz', 'wb',compresslevel=1) as f: f.write(str("传入的的字符串,这个字符串会被压缩到file.txt.gz里面")) with gzip.open("file.txt.gz","rb") as read: #这个是从file.txt.gz中读取你的压缩数据 print read.read()
第二种 #这次压缩的数据写入了buffer里面,因为是及处理的时候我们不一定每次都压缩方到文件里 #有时候放入buffer里面就直接进行网络传输了。 def gzip_compress(c_data): buf = StringIO() try: with gzip.GzipFile(mode='wb', fileobj=buf) as f: f.write(c_data) return buf.getvalue() except Exception as e: print ("compress wrong"+e) finally: f.close() def gzip_uncompress(c_data): try: buf = StringIO(c_data) with gzip.GzipFile(mode='rb', fileobj=buf) as f: return f.read() except Exception as e: print("uncompress wrong"+e) finally: f.close()