为什么在ftplib中成功消息被视为错误

2024-04-19 07:42:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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')

这将返回:

回溯(最近一次呼叫): 文件“C:\scripts\ftp_测试.py“,第25行,英寸 s=邮箱.mkd('\E\ this4\') 文件“C:\Python26\lib\ftplib.py“,第553行,单位:mkd 返回parse257(resp) 文件“C:\Python26\lib\ftplib.py“,第651行,第257行 引发错误回答 错误答复:250目录创建成功。在

它成功地创建了一个目录,但它认为这是一个错误!世界跆拳道联盟?在

我计划在一个循环中创建多个目录,如何在每次成功创建一个目录时都不中断它呢?在


Tags: 文件pyimport目录boxserverlib错误
2条回答

ftplib期望的结果是257,定义为“created”,因此它可以解析<pathname>并为您返回它;但是您的服务器意外地给出了250的结果,没有返回路径名,因此mkd方法当然会失败。在

为了解决这种特殊的服务器行为,您可以使用voidcmd来发送MKD /your/path命令毕竟,您知道要创建的路径名,因为它是绝对路径名。在

根据RFC 959(FTP),对MKD的唯一有效响应代码是257。看来这是FTP服务器不符合标准导致的问题。在

为了您的利益,以下是相关的ftplib代码:

if resp[:3] != '257':
    raise error_reply, resp

相关问题 更多 >