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

使用空凭据登录时ftputil报530错误但ftplib可正常连接

ftputil空凭据连接FTP报错530的解决方法

问题描述

使用ftplib以空用户名和密码连接ftp.swpc.noaa.gov可以正常工作,但使用ftputil相同凭据时,出现错误:

ftputil.error.PermanentError: 530 Please login with USER and PASS.

原因分析

ftputil的FTPHost构造函数在处理空用户名时,会默认将用户名替换为anonymous,并自动生成类似user@example.com的默认密码作为匿名登录凭据。但部分FTP服务器(如目标服务器)仅接受空凭据登录,不识别这种匿名用户默认值,因此触发认证错误。

解决方案

绕过ftputil的默认登录逻辑,先通过ftplib完成空凭据登录,再将已认证的ftplib实例传给ftputil使用:

import ftputil
import ftplib

host = 'ftp.swpc.noaa.gov'
user = ''
pw = ''

# 用ftplib完成空凭据登录
ftp_client = ftplib.FTP(host)
ftp_client.login(user, pw)

# 复用已登录的连接初始化FTPHost
with ftputil.FTPHost(None, None, None, ftp_client=ftp_client) as ftphost:
    # 测试ftputil功能,列出当前目录内容
    print(ftphost.listdir(ftphost.curdir))

说明

这种方式让ftputil直接使用已完成认证的ftplib连接,避免了其自动替换空凭据为匿名用户信息的逻辑,从而适配仅接受空凭据的FTP服务器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:07:13