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_test.py”,第25行,in s = box.mkd('\ E \ this4 \') 文件“C:\ Python26 \ lib \ ftplib.py”,第553行,在mkd中 return parse257(resp) 文件“C:\ Python26 \ lib \ ftplib.py”,第651行,在parse257中 提出error_reply,resp error_reply:250目录已成功创建。
它成功创建了一个目录,但它认为它是一个错误! WTF?
我计划在循环中创建许多目录,如何在不成功创建单个目录的情况下执行此操作?
答案 0 :(得分:1)
根据RFC 959(FTP),MKD唯一有效的响应代码是257.看起来这是由于FTP服务器不符合标准而引起的问题。
为了您的兴趣,这是相关的ftplib代码:
if resp[:3] != '257':
raise error_reply, resp
答案 1 :(得分:1)
ftplib
期待257的结果,定义为“已创建”,因此它可以解析<pathname>
并为您返回;但是你的服务器令人惊讶地给出250的结果并且不返回路径名,所以mkd
方法当然会失败。
作为这种特殊服务器行为的解决方法,您可以使用voidcmd发送MKD /your/path
命令 - 毕竟,您知道您要创建的路径名,因为它是绝对的。