Python连接IP型FTP服务器实现文件上传下载报错求助
Python FTP上传功能代码问题排查
现有代码的错误点
- 服务器IP填写错误:你定义的
FTP_HOST = '192.16.0.20',和实际可用的IP192.168.0.20相比缺失了一位8,会直接触发连接失败报错。 - 端口参数错误:
- 端口要求传入整数类型,你定义的
PORT='21'是字符串类型,类型不匹配 ftplib.FTP类的构造函数第二个位置参数是登录用户名,不是端口,直接按你写的顺序传参,端口值会被识别为用户名,直接导致登录逻辑完全错误
- 端口要求传入整数类型,你定义的
- 格式转义问题:你贴出的代码里
"是HTML格式的双引号转义符,实际Python代码中需要替换为普通双引号"才能正常解析。
修复后的完整代码
import ftplib # FTP服务器配置 FTP_HOST = '192.168.0.20' PORT = 21 FTP_USER = 'ftpuser' FTP_PASS = 'ftpuser' # 初始化FTP实例 ftp = ftplib.FTP() # 先指定地址端口连接服务器 ftp.connect(host=FTP_HOST, port=PORT) # 再传入账号密码登录 ftp.login(user=FTP_USER, passwd=FTP_PASS) # 设置UTF-8编码 ftp.encoding = "utf-8" # 上传文件示例 filename = "test.txt" with open(filename, "rb") as file: ftp.storbinary(f'STOR {filename}', file) # 可选:下载文件示例,将服务器上的test.txt下载到本地命名为test_download.txt # download_filename = "test.txt" # local_save_path = "test_download.txt" # with open(local_save_path, "wb") as f: # ftp.retrbinary(f'RETR {download_filename}', f.write) # 列出服务器当前目录文件 ftp.dir() # 关闭连接 ftp.quit()
额外注意事项
如果连接后上传/下载超时,可以尝试添加一行ftp.set_pasv(True)开启被动模式,大部分局域网FTP服务器都要求被动模式才能正常传输文件。如果还是报错可以打印ftp.getwelcome()查看服务器返回的连接信息,确认连接是否正常建立。
内容的提问来源于stack exchange,提问作者josiah waboyo
相关产品推荐
相关产品推荐

