Python 中使用 ftplib 包的异常处理
Exception handling using ftplib package in Python
我是 Python 中 ftplib
和 FTP 的新手,我正在测试文档提供的一个简单脚本:https://docs.python.org/3/library/ftplib.html#ftplib.error_reply
try:
ftp = ftplib.FTP('ftp.us.debian.org')
ftp.login('111', '111')
except ftplib.all_errors as err:
print(f'Error: ' + str(err))
这个returnsError: 503 Login with USER first.
,如果我加上ftp.set_debuglevel(2)
这会告诉我更详细的信息:
*cmd* 'USER 111'
*put* 'USER 111\r\n'
*get* '331 This FTP server is anonymous only.\n'
*resp* '331 This FTP server is anonymous only.'
*cmd* 'PASS ***'
*put* 'PASS ***\r\n'
*get* '503 Login with USER first.\n'
*resp* '503 Login with USER first.'
Error: 503 Login with USER first.
它告诉我其他信息,例如 This FTP server is anonymous only
。
所以我也试过了:
try:
ftp = ftplib.FTP('ftp.us.debian.org')
except ftplib.all_errors as err:
print(f'Error: ' + str(err))
try:
#ftp.set_debuglevel(2)
ftp.login('111', '111')
except ftplib.all_errors as err:
print(f'Error: ' + str(err))
这还是不会告诉我This FTP server is anonymous only
我想知道我是否遗漏了什么,有人可以告诉我为 FTP 进行异常处理的最佳做法是什么吗?有什么例子吗?非常感谢。
该错误与 ftplib
无关,而与所谓的 ftp 匿名模式有关。
FTP 是一个相当古老的协议,它要求客户端向服务器提供凭据。它不适合 public 服务器,所以特殊的 ftp
或 anonymous
(*) 用户被用于 anonymous 日志记录(这是可选的大多数 FTP 服务器)。用法是传递 ftp
作为密码,或传递用户邮件地址,让服务器管理员知道谁使用了他们的服务。
所以这里你应该使用:
try:
ftp = ftplib.FTP('ftp.us.debian.org')
ftp.login('ftp', 'ftp') # or ftp.login('anonymous', 'guest')
except ftplib.all_errors as err:
print(f'Error: ' + str(err))
RFC 1635 只定义了用户 anonymous
并推荐 guest
密码,但我用过的大多数服务器也接受 ftp
我是 Python 中 ftplib
和 FTP 的新手,我正在测试文档提供的一个简单脚本:https://docs.python.org/3/library/ftplib.html#ftplib.error_reply
try:
ftp = ftplib.FTP('ftp.us.debian.org')
ftp.login('111', '111')
except ftplib.all_errors as err:
print(f'Error: ' + str(err))
这个returnsError: 503 Login with USER first.
,如果我加上ftp.set_debuglevel(2)
这会告诉我更详细的信息:
*cmd* 'USER 111'
*put* 'USER 111\r\n'
*get* '331 This FTP server is anonymous only.\n'
*resp* '331 This FTP server is anonymous only.'
*cmd* 'PASS ***'
*put* 'PASS ***\r\n'
*get* '503 Login with USER first.\n'
*resp* '503 Login with USER first.'
Error: 503 Login with USER first.
它告诉我其他信息,例如 This FTP server is anonymous only
。
所以我也试过了:
try:
ftp = ftplib.FTP('ftp.us.debian.org')
except ftplib.all_errors as err:
print(f'Error: ' + str(err))
try:
#ftp.set_debuglevel(2)
ftp.login('111', '111')
except ftplib.all_errors as err:
print(f'Error: ' + str(err))
这还是不会告诉我This FTP server is anonymous only
我想知道我是否遗漏了什么,有人可以告诉我为 FTP 进行异常处理的最佳做法是什么吗?有什么例子吗?非常感谢。
该错误与 ftplib
无关,而与所谓的 ftp 匿名模式有关。
FTP 是一个相当古老的协议,它要求客户端向服务器提供凭据。它不适合 public 服务器,所以特殊的 ftp
或 anonymous
(*) 用户被用于 anonymous 日志记录(这是可选的大多数 FTP 服务器)。用法是传递 ftp
作为密码,或传递用户邮件地址,让服务器管理员知道谁使用了他们的服务。
所以这里你应该使用:
try:
ftp = ftplib.FTP('ftp.us.debian.org')
ftp.login('ftp', 'ftp') # or ftp.login('anonymous', 'guest')
except ftplib.all_errors as err:
print(f'Error: ' + str(err))
RFC 1635 只定义了用户 anonymous
并推荐 guest
密码,但我用过的大多数服务器也接受 ftp