我正在尝试用Python编写FTP客户端软件。我尝试实现一种重命名目录的方法:
ftp = FTP()
ftp.connect('host')
ftp.login('usrname', 'pass')
ftp.retrlines('RNFR Builds')
ftp.retrlines('RNTO My_Builds')
但是我不断收到此错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.5/tkinter/__init__.py", line 1553, in __call__
return self.func(*args)
File "Source.py", line 449, in set_name_from_rename
self.ftpController.ftp.retrlines('RNFR Builds')
File "/usr/lib/python3.5/ftplib.py", line 467, in retrlines
with self.transfercmd(cmd) as conn,
File "/usr/lib/python3.5/ftplib.py", line 398, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "/usr/lib/python3.5/ftplib.py", line 374, in ntransfercmd
raise error_reply(resp)
ftplib.error_reply: 350 Directory exists, ready for destination name.
我确定我有权重命名目录。有人可以帮忙吗?
提前感谢您的帮助。
不要调用retrlines
,使用 sendcmd
。对于最终RNTO
,您甚至可以使用voidcmd
更严格地验证操作(需要2xx
响应(。
ftp.sendcmd('RNFR Builds')
ftp.voidcmd('RNTO My_Builds')
retrlines
用于使用数据连接的命令。 即通常用于目录列表,如LIST
、NLST
、MLSD
。虽然RNFR
和RNTO
是仅返回状态的琐碎FTP命令。