2017-06-11 11 views
1

私はPythonでFTPクライアントソフトウェアを書こうとしています。私は、ディレクトリの名前を変更する方法を実装しようとした:
RNFTとRNTOコマンドを使用してディレクトリの名前を変更する方法は? (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. 

私は、ディレクトリの名前を変更する権限を持っていると確信しています。誰でも助けてくれますか?
事前に助けてくれてありがとう。

答えて

2

sendcmdを使用し、retrlinesを呼び出さないでください。最終RNTOのために、あなたも、もっと厳密に操作を検証するためにvoidcmdを使用することができます(2xx応答が必要です)。

ftp.sendcmd('RNFR Builds') 
ftp.voidcmd('RNTO My_Builds') 

retrlinesは、データ接続を利用するコマンドのために使用されています。私。通常、ディレクトリ一覧の場合は、LIST,NLST,MLSDのようになります。 RNFRRNTOはステータスを返すだけの簡単なFTPコマンドですが。

+1

どうもありがとう:)は時間苦労したことがあり.... – RainingComputers

関連する問題