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

使用Paramiko通过SFTP传输文件成功却报错的问题求助

SFTP文件传输成功但报错[Errno 2]文件不可提取的解决思路

先修正代码里的明显错误

  • 模块名拼写错误:代码里的pmiko是笔误,正确应为paramiko
  • SFTP实例创建错误:ssh_Client.connect.open_sftp()写法错误,connect()是连接服务器的方法,执行后直接通过SSHClient实例调用open_sftp()即可,正确代码是sftp_oppen = ssh_Client.open_sftp()

错误原因排查与解决方向

  1. 服务器端特殊配置导致
    既然这台SFTP服务器配置复杂,很可能是服务器在文件上传后有自动提取、校验的后续流程。比如服务器要求文件必须上传到指定目录,或者文件名有特定规则,导致后续处理失败抛出错误,虽然文件本身已经上传成功。

    • 尝试使用服务器端的完整目标路径,不要只传文件名。比如把str_fileName改成/服务器指定上传目录/ + str_fileName
    • 联系服务器管理员,确认上传目录的权限要求、文件名规则,以及这个“不可提取”错误的具体触发条件
  2. 代码缺乏异常处理与校验
    当前代码没有任何异常捕获,可能在SFTP操作的某个环节触发了错误,但文件已经完成上传。建议添加异常处理和文件校验步骤,明确错误发生的阶段:

    import paramiko
    import os
    
    try:
        ssh_Client = paramiko.SSHClient()
        ssh_Client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh_Client.load_system_host_keys()
        ssh_Client.connect(str_host, username=str_uid, password=str_pwd, port=self.__int_portnumber)
    
        sftp_oppen = ssh_Client.open_sftp()
        local_file_path = os.path.join(str_folder, str_fileName)
        # 替换成服务器要求的完整远程路径
        remote_file_path = f"/指定上传目录/{str_fileName}"
        
        sftp_oppen.put(local_file_path, remote_file_path)
        
        # 校验上传文件是否完整
        remote_file_size = sftp_oppen.stat(remote_file_path).st_size
        local_file_size = os.path.getsize(local_file_path)
        if remote_file_size == local_file_size:
            print("文件上传完整")
        
        sftp_oppen.close()
        ssh_Client.close()
    except Exception as e:
        print(f"错误详情: {str(e)}")
        # 确保连接资源被释放
        if 'sftp_oppen' in locals() and sftp_oppen:
            sftp_oppen.close()
        if 'ssh_Client' in locals() and ssh_Client:
            ssh_Client.close()
    
  3. 错误信息的特殊来源
    这个[Errno 2] The message [/fileName.xlsx] is not extractable!不是paramiko原生的错误提示(原生Errno2一般是“文件不存在”),更可能是服务器端自定义的错误信息,通过SFTP通道返回。必须和服务器运维人员确认这个错误的具体含义,比如是不是服务器端的文件处理脚本出现了异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:25:04