You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.6.4网络文件写入异常:脚本死循环且文件始终为0KB

解决Python文件传输时无限循环+目标文件0KB的问题

嘿,我一眼就看到你代码里的几个关键问题,这正是导致无限循环和文件一直0KB的原因,咱们一步步来修复:

  • 错误地将s.accept()放在while循环内:
    这个调用是用来等待新的客户端连接的,你把它放在循环里,意味着每次循环都要等一个新连接才能继续。但实际上你应该先接受一次连接,然后在同一个连接里持续接收数据,直到传输完成。

  • 判断数据结束的逻辑错误:
    Python3中conn.recv(1024)返回的是bytes对象,不是字符串,所以data == ""这个条件永远不会触发,循环根本停不下来。正确的判断方式是检查if not data——当对方关闭连接时,recv()会返回空的bytes对象,这时候就可以终止循环了。

  • 连接关闭的位置不正确:
    你现在的conn.close()写在文件关闭之后,但因为循环一直跑,这段代码根本执行不到。而且应该在接收完所有数据后再关闭连接。

下面是修正后的完整代码:

# 先接受一次连接,放在循环外面!
conn, addr = s.accept()
f = open(f_name+'.txt', 'wb')
while True:
    data = conn.recv(1024)
    # 用正确的方式判断数据是否接收完毕
    if not data:
        break
    f.write(data)
# 先关闭文件,再关闭连接
f.close()
conn.close()
print("File closed and connection closed")

内容的提问来源于stack exchange,提问作者Rajiv Makwana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:25:37