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

Python简易文件服务器程序始终提示文件不存在问题排查求助

解决Python简易文件服务器中文件存在性检查失败的问题

嘿,我瞅你写这个简易文件服务器的时候,卡在文件存在性检查这一步了——每次都提示文件不存在,对吧?帮你捋了一遍代码,发现两个核心问题,咱们一个个来 fix:

问题1:参数被错误覆盖

你定义的RetFile函数明明接收了FileName参数,但函数第一行就写了FileName = sock.recv(1024),直接把传入的文件名给覆盖了!这相当于你完全没用到一开始传进来的文件名,反而去接收客户端的消息作为文件名(如果这是你的设计,那没问题,但得处理下面的编码问题)。

问题2:字节串未解码成字符串

sock.recv(1024)返回的是字节对象(bytes),但os.path.isfile()需要的是字符串格式的文件路径。你直接把字节串传给它,系统自然识别不了对应的文件。

修正后的代码示例

import socket
import threading
import os

def RetFile(sock):
    # 接收客户端发来的文件名,解码成字符串并去除多余空白符
    file_name = sock.recv(1024).decode('utf-8').strip()  
    print(f"尝试查找文件:{file_name}")  # 调试用,确认接收的文件名是否正确
    
    exists = os.path.isfile(file_name)
    if exists:
        file_size = os.path.getsize(file_name)
        sock.send(f"EXISTS {file_size}".encode('utf-8'))
        
        # 接收客户端的确认指令
        user_response = sock.recv(1024).decode('utf-8').strip()
        if user_response[:2] == "OK":
            with open(file_name, 'rb') as f:
                # 分块发送文件内容
                while chunk := f.read(1024):
                    sock.send(chunk)
            print("文件发送完成")
    else:
        sock.send("NOT_EXISTS".encode('utf-8'))
        print(f"文件 {file_name} 不存在")

# 补充服务器启动的基础代码(你原代码未写完的部分)
def handle_client(client_sock):
    try:
        RetFile(client_sock)
    finally:
        client_sock.close()

def start_server():
    host = '0.0.0.0'
    port = 12345
    server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_sock.bind((host, port))
    server_sock.listen(5)
    print(f"服务器启动,监听 {host}:{port}")
    
    while True:
        client_sock, addr = server_sock.accept()
        print(f"接收到来自 {addr} 的连接")
        threading.Thread(target=handle_client, args=(client_sock,)).start()

if __name__ == "__main__":
    start_server()

额外调试小技巧

  • 加上print(f"接收的文件名:{file_name},类型:{type(file_name)}"),确认你拿到的文件名是不是正确的字符串,有没有多余的换行/空格字符。
  • 检查文件路径:如果客户端传的是相对路径,要确保服务器程序的工作目录下确实有这个文件,或者改用绝对路径来做存在性检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:55:53