Python ftplib连接失败自动打印调用栈 如何抑制该异常输出行为
问题根因
FTP类的构造方法在传入主机IP、用户名、密码参数时,会自动调用connect()和login()方法完成连接、登录逻辑。你把初始化代码写在了try块外部,连接出错时抛出的异常没有被捕获,所以会直接打印堆栈信息。- 你在初始化时已经传入了连接参数,后续重复调用
connect()方法也会引发不必要的错误。 - 原有代码仅导入了
FTP类,捕获异常时使用ftplib.all_errors会触发名称错误,无法正常匹配异常类型。
修复方案
二选一即可:
方案1:构造时直接传参,将初始化逻辑放入try块
from ftplib import FTP, all_errors try: # 构造方法内部自动完成连接、登录操作 ftp_cui = FTP(ip, username, password, timeout=5.0) except all_errors as e: print("error")
方案2:构造时不传连接参数,手动调用连接/登录方法
from ftplib import FTP, all_errors # 仅初始化实例,不触发连接 ftp_cui = FTP(timeout=5.0) try: ftp_cui.connect(host=ip, port=21) ftp_cui.login(user=username, passwd=password) except all_errors as e: print("error")
内容的提问来源于stack exchange,提问作者Farahi
相关产品推荐
相关产品推荐

