write()后文件大小未更新?

2024-05-28 23:28:36 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,我试图从Python套接字接收一个文件并将其写入本地文件 我有以下代码

chunk=clientDtSocket.recv(1024)

while chunk:
    print("In Chunk"+str(chunk))    

    incomingFile.write(chunk)
    chunk=clientDtSocket.recv(1024)

我被跟踪了

In Chunkb'Sohail Khan'

但文件大小保持不变。 还有,如何计算接收到的字节数。你知道吗


Tags: 文件代码inwriteprintchunkwhilestr
2条回答

确保循环结束后关闭文件。你知道吗

您可以使用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() # <  

与其手动关闭文件,不如考虑使用^{} statement

with open('/path/to/localfile', 'wb') as incomingFile:
    ....

打开文件时,请将“写入缓冲区大小”设置为0:

bufsize = 0
incomingFile = open('....', 'w', bufsize)

通常情况下,调用write函数后,数据不是立即保存到文件中,而是完全填满后写缓冲区。但如果您将缓冲区大小设置为0(如上述axsample中所示),则yoor数据将被写入immidiatel。将数据从写缓冲区写入文件通常称为“刷新”

关闭文件时也会刷新:

incomingFile.close()

相关问题 更多 >

    热门问题