我必须使用python脚本将7231字节写入文件。在客户端 - 服务器程序中,我的python脚本就像客户端一样,它从服务器接收了7231个字节。如果我签入TCP-Dump,它会显示完整的数据。但是当我尝试写入文件时;我错过了内容。
我的剧本:
def SendOnce(self, req='/gpsData=1',method="GET"):
conn = httplib.HTTPConnection(self.proxy)
self.Logresponse("\nConnection Open\n<br />")
conn.request(method,req)
Log="\nRequest Send: %s\n<br \>\n" %req
self.Logresponse(Log)
response = conn.getresponse()
Log = "\nResponse Code: %s\n<br \>\n" %response.status
self.Logresponse(Log)
Log = "\nSarav -- Get Header: %s \n version= %s <br \>\n" %(response.msg,response.version)
self.Logresponse(Log)
if (response.status==200):
Log = response.read()
self.Logresponse(Log)
conn.close()
self.Logresponse("\nConnection Close\n<br \>")
return response
这个“self.Logresponse(Log)”正在写入文件。如果我收到1023个字节,它将全部内容写入其中。请帮我解释如何编写完整的数据。 注意:我正在编写Hexa格式数据。
答案 0 :(得分:3)
首先,7231字节不是很大......
由于您提供的信息有限,我猜您可能忘记考虑操作系统的写入缓冲区。您可能会在写入所有内容之前尝试读取该文件。
Python通常使用系统的标准缓冲区(you can change that)。您可以减少该缓冲区,或自己强制flush。
答案 1 :(得分:0)
我只是猜测,可能是.read()函数不会返回一个块中的所有数据;你能尝试像这样修改内部部分:
if (response.status==200):
while 1:
Log = response.read()
if not Log:
break
self.Logresponse(Log)