使用 FTP 忽略 python 中的异常

Ignore exceptions in python with FTP

我正在尝试编写一个快速的小程序,它将通过 CSV 文件进行解析,提取用户名和密码并测试登录到 FTP 以创建目录并使用这些用户名和密码删除它。我写了一个 try catch,所以它可以输出我得到的任何错误,这样我就可以查看哪些 FTP 登录可能需要调整。问题是当我 运行 它时,如果任何登录被破坏而不是继续,它将停止。尝试后我尝试使用 passfinally 但它不会 return 进入循环。任何帮助表示赞赏。

import csv
import ftplib
from ftplib import FTP
with open ('Filename.csv') as csvfile:  
    readCSV = csv.reader(csvfile, delimiter=',')
    lineCount = 0
    rowCount = 0
    for row in readCSV:
        username = row[rowCount]
        passwordFTP = row[rowCount+1]
        print (username)
        ftp = FTP('ftp.org') #place the FTP address here 
        ftp.set_debuglevel(2) #this is set to highest debug level 
        try: 
            ftp.login(user='usernameGoesHere', passwd='passwordGoesHere', acct='')
        except ftplib.all_errors as e:
            errorcode_string = str(e).split(None, 1)[0]
            pass
        finally: 
            ftp.cwd('/TestDir')
            ftp.mkd('testDir')
            ftp.rmd('testDir')
            ftp.quit()
            pass

把代码放在finally里面其实没什么用。尽管您已经放置了 pass 语句,但它在此代码中没有任何作用。在登录时出现错误,程序将记录错误并仍然尝试为给定的连接创建一个文件夹。

而是将cwdmkd和其他方法移动到try块。如果那里抛出错误,except 将捕获它并停止执行。

完全没有必要在 try 中的任何地方放置 pass 语句。唯一仍然可以保留在 finally 块中的是 ftp.quit() 所以它会清理,如果其中一个操作失败则关闭连接,但另一方面如果登录不成功会发生什么?

做类似的事情:

with FTP('ftp.org') as ftp
    try: 
        ftp.login(user='usernameGoesHere', passwd='passwordGoesHere', acct='')
        ftp.cwd('/TestDir')
        ftp.mkd('testDir')
        ftp.rmd('testDir')
    except ftplib.all_errors as e:
        errorcode_string = str(e).split(None, 1)[0]

使用上下文管理器(with 语句)将帮助您手动退出。