Python 为什么成功消息在ftplib中被视为错误
这将返回: 回溯(最近一次呼叫最后一次): 文件“C:\scripts\ftp\u test.py”,第25行,在 s=box.mkd(“\E\this4\”) 文件“C:\Python26\lib\ftplib.py”,第553行,在mkd中 返回解析257(resp) 文件“C:\Python26\lib\ftplib.py”,第651行,在parse257中 分别提出错误回复 错误\答复:已成功创建250个目录 它成功地创建了一个目录,但它认为这是一个错误!WTF 我计划在一个循环中创建多个目录,如何在每次成功创建一个目录时不使其中断?根据(FTP),对MKD的唯一有效响应代码是257。看起来这是FTP服务器不符合标准导致的问题 出于您的兴趣,以下是相关的ftplib代码:Python 为什么成功消息在ftplib中被视为错误,python,ftp,ftplib,Python,Ftp,Ftplib,这将返回: 回溯(最近一次呼叫最后一次): 文件“C:\scripts\ftp\u test.py”,第25行,在 s=box.mkd(“\E\this4\”) 文件“C:\Python26\lib\ftplib.py”,第553行,在mkd中 返回解析257(resp) 文件“C:\Python26\lib\ftplib.py”,第651行,在parse257中 分别提出错误回复 错误\答复:已成功创建250个目录 它成功地创建了一个目录,但它认为这是一个错误!WTF 我计划在一个循环中创建多
import ftplib
server = '192.168.1.109'
user = 'bob'
password = 'likes_sandwiches'
box = ftplib.FTP(server)
box.login(user, password)
s = box.mkd('\\a\\this4\\')
box.close()
x = raw_input('done, eat sandwiches now')
ftplib
预期结果为257,定义为“created”,因此它可以解析
并返回给您;但是您的服务器令人惊讶地给出了250的结果,并且没有返回路径名,因此mkd
方法当然会失败
作为这种特殊服务器行为的解决方法,您可以使用发送
MKD/your/path
命令——毕竟,您知道要创建的路径名,因为它是绝对路径名。好的,看起来我的FTP服务器说话带有口音。我没办法改变它。我如何形成一个循环来创建目录并忽略它将向我抛出的所有这些异常?@ruffiko,使用voidcmd方法,正如我在回答中提到的。与其忽略异常,您可能应该选择Alex的答案并使用voidcmd。
if resp[:3] != '257':
raise error_reply, resp