在python脚本中将数据写入文件时遇到问题

时间:2011-12-01 12:25:18

标签: python string

我必须使用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格式数据。

2 个答案:

答案 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)