在下面的代码中,我试图从Python套接字接收文件并将其写入本地文件 我有以下代码
chunk=clientDtSocket.recv(1024)
while chunk:
print("In Chunk"+str(chunk))
incomingFile.write(chunk)
chunk=clientDtSocket.recv(1024)
我得到了以下
In Chunkb'Sohail Khan'
但文件大小保持不变。 另外,我如何计算我收到的字节数。
答案 0 :(得分:1)
确保循环后文件已关闭。
您可以使用len
函数检查收到的字节数:
chunk = clientDtSocket.recv(1024)
while chunk:
print("received {} bytes".format(len(chunk))) # <-----
print("In Chunk " + str(chunk))
incomingFile.write(chunk)
chunk = clientDtSocket.recv(1024)
incomingFile.close() # <----
请考虑使用with
statement:
with open('/path/to/localfile', 'wb') as incomingFile:
....
答案 1 :(得分:-1)
当您将文件集写缓冲区大小打开为0时:
bufsize = 0
incomingFile = open('....', 'w', bufsize)
这是正常的行为,在调用写入函数后,数据不会立即保存到文件中,但是将完全填充写入缓冲区。但是,如果您将缓冲区大小设置为0,如上例所示,您的yoor数据将被写入immidiatel。将数据从写入缓冲区写入文件通常称为“刷新”
关闭文件时也会出现刷新:
incomingFile.close()