【发布时间】:2016-07-16 20:59:57
【问题描述】:
我已从 HTTP 回复中压缩数据。我有以下代码:
def gzipDecode(self, content):
import StringIO
import gzip
outFilePath = 'test'
compressedFile = StringIO.StringIO(content)
decompressedFile = gzip.GzipFile(fileobj=compressedFile)
with open(outFilePath, 'w') as outfile:
outfile.write(decompressedFile.read())
data = ''
with open(outFilePath, 'r') as myfile:
data=myfile.read().replace('\n', '')
return data
解压输入的 gzip 压缩内容并返回字符串(http 回复是 gzip 压缩的 json)。 - 有效。
但我需要它而不创建 test 文件 - 全部在内存中。
我修改为:
def gzipDecode(self, content):
import StringIO
from io import BytesIO
import gzip
outFile = StringIO.StringIO()
compressedFile = StringIO.StringIO(content)
decompressedFile = gzip.GzipFile(fileobj=compressedFile)
outFile.write(decompressedFile.read())
outFile.flush()
data = outFile.read().replace('\n', '')
print "_" + data + "_"
return data
但它在解析 json 时崩溃(gzipDecode 产生空输出):
Traceback (most recent call last):
__
File "/usr/lib/python2.7/SocketServer.py", line 593, in process_request_thread
self.finish_request(request, client_address)
----------------------------------------
File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
Exception happened during processing of request from ('10.123.66.3', 39853)
self.RequestHandlerClass(request, client_address, self)
----------------------------------------
File "/usr/lib/python2.7/SocketServer.py", line 649, in __init__
self.handle()
File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle
self.handle_one_request()
File "/usr/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request
method()
File "/tmp/test_server.py", line 92, in do_POST
data = json.loads(file_content)
File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
我做错了什么?
【问题讨论】:
-
但在解析 json 时崩溃。它是如何“崩溃”的?您能否提供一些示例输入、预期输出和实际输出(包括完整的回溯,如果有的话)?
标签: python json gzip compression stringio