python - 使用FTP忽略python中的异常

标签 python loops error-handling ftp

我正在尝试编写一个快速的小程序,该程序将通过CSV文件解析拉用户名和密码,并测试登录到FTP以创建目录并使用这些用户名和密码将其删除。我已经编写了一个try catch,以便它可以输出出现的任何错误,以便我可以查看可能需要调整的FTP登录。问题是当我运行它时,如果任何登录中断而不是继续运行,它将停止。我尝试之后尝试使用passfinally,但它不会返回循环。任何帮助表示赞赏。

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将捕获该错误并停止执行。

绝对没有必要在pass中的任何地方放置try语句。 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语句)将帮助您手动退出。

关于python - 使用FTP忽略python中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59431810/

相关文章:

ruby - 简单的程序,但非常卡住——Ruby 中的循环

python - 在 numpy 中转置 4 维数组

python - SQLalchemy: alembic bulk_insert() 失败

php - 无重复(分组依据)字段 1 循环,字段 2 位于水平线

c++ - 哥德巴赫猜想程序编写中的问题

c# - 如何处理 404 错误

vba - VBA错误处理,将错误定义为错误

c# - Entity Framework : how to catch any error

python - airflow中如何控制DAG并发

python - 如何防止 tensorflow 分配整个 GPU 内存?