使用 FTP 忽略 python 中的异常
Ignore exceptions in python with FTP
我正在尝试编写一个快速的小程序,它将通过 CSV 文件进行解析,提取用户名和密码并测试登录到 FTP 以创建目录并使用这些用户名和密码删除它。我写了一个 try catch,所以它可以输出我得到的任何错误,这样我就可以查看哪些 FTP 登录可能需要调整。问题是当我 运行 它时,如果任何登录被破坏而不是继续,它将停止。尝试后我尝试使用 pass
和 finally
但它不会 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
语句,但它在此代码中没有任何作用。在登录时出现错误,程序将记录错误并仍然尝试为给定的连接创建一个文件夹。
而是将cwd
、mkd
和其他方法移动到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
语句)将帮助您手动退出。
我正在尝试编写一个快速的小程序,它将通过 CSV 文件进行解析,提取用户名和密码并测试登录到 FTP 以创建目录并使用这些用户名和密码删除它。我写了一个 try catch,所以它可以输出我得到的任何错误,这样我就可以查看哪些 FTP 登录可能需要调整。问题是当我 运行 它时,如果任何登录被破坏而不是继续,它将停止。尝试后我尝试使用 pass
和 finally
但它不会 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
语句,但它在此代码中没有任何作用。在登录时出现错误,程序将记录错误并仍然尝试为给定的连接创建一个文件夹。
而是将cwd
、mkd
和其他方法移动到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
语句)将帮助您手动退出。