0

ftp.delete()ftplibから使用しようとするとerror_perm、respが発生します。

>>> from ftplib import FTP
>>> ftp = FTP("192.168.0.22")
>>> ftp.login("user", "password")
'230 Login successful.'
>>> ftp.cwd("/Public/test/hello/will_i_be_deleted/")
'250 Directory successfully changed.'
>>> ftp.delete("/Public/test/hello/will_i_be_deleted/")
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ftplib.py", line 520, in delete
resp = self.sendcmd('DELE ' + filename)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ftplib.py", line 243, in sendcmd
return self.getresp()
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ftplib.py", line 218, in getresp
raise error_perm, resp
ftplib.error_perm: 550 Delete operation failed.

ディレクトリが存在し、「ユーザー」がフォルダを削除するのに十分な権限を持っています。

このサイトは、実際には ftp をサポートする NAS (WD MyBookWorld) です。

親ディレクトリに変更してコマンドを使用ftp.delete("will_i_be_deleted")しても機能しません。

「will_i_be_deleted」は空のディレクトリです。

WD MyBookWorld の ftp 設定:

Service - Enable; Enable Anonymous - No; Port (Default 21) - Default
4

3 に答える 3

2

rmdコマンドを使用する必要があります。

ftp.rmd("/Public/test/hello/will_i_be_deleted/")

rmdディレクトリを削除するためのもので、deleteファイルを削除するためのものです。

于 2012-05-18T07:41:29.833 に答える
0

私のために働く唯一の方法は、ftp.rename()コマンドで名前を変更できることです。

例えば

ftp.mkd("/Public/Trash/")
ftp.rename("/Public/test/hello/will_i_be_deleted","/Public/Trash/will_i_be_deleted")

次に、ゴミ箱の内容を手動で削除することがあります。

これがWDMyBookWorldftp機能の排他的な問題であるかどうかはわかりませんが、少なくとも回避策はあります。

于 2012-05-19T01:01:00.077 に答える