旧城旧人 发表于 2021-4-28 19:03

求助,Python递归删除FTP文件夹以及文件的方法

百度找了几个都不能用,自己写了一段也有点问题

    def delAllfile(self, ftppath):
      try:
            self.ftp.cwd(ftppath)
      except Exception as e:
            # 报错就认为是文件
            self.ftp.delete(ftppath)
      RemoteNames = self.ftp.nlst()
      print(RemoteNames)
      if "." in RemoteNames:
            RemoteNames.remove(".")
      if ".." in RemoteNames:
            RemoteNames.remove("..")
      for file in RemoteNames: # 1231 13123213
            if file.find(".") == -1:
                print(file)
                self.delAllfile(file)
            else:
                self.ftp.delete(file)

      self.ftp.cwd("..")
      print(ftppath)
      self.ftp.rmd(ftppath)

旧城旧人 发表于 2021-4-28 19:04

上边是自己写的一段,它删到最顶级的时候就会报找不到文件

无闻无问 发表于 2021-4-28 21:46

用os.walk更好

fanvalen 发表于 2021-4-28 21:47

无闻无问 发表于 2021-4-28 21:46
用os.walk更好

ftp上操作没有os属性

fanvalen 发表于 2021-4-28 21:49

from ftplib import FTP
ftp=FTP()
ftp.encoding='utf-8'
ftp.connect(host='192.168.1.4',port=21)#自定义端口请填写
ftp.login()#可以传用户密码格式user='',passwd=''匿名登录不填
#展示目录下的文件
l=ftp.nlst('/Download/')
print(l)
#删除new文件夹 先判断一下是否存在
#改操作直接删除文件及子目录无需遍历删除文件
path='new'
if path in l:
    ftp.rmd('/Download/new/')
    print('删除'+path+'成功')
else:
    print('文件夹不存在')
#显示一下目录看文件夹还存在否
l=ftp.nlst('/Download/')
print(l)

ftp.quit()


不需要那么复杂

fanvalen 发表于 2021-4-28 21:53

fanvalen 发表于 2021-4-28 21:49
from ftplib import FTP
ftp=FTP()
ftp.encoding='utf-8'


当然你要显示删除什么文件就自行遍历了
不过也没什么卵用删除了要么恢复数据
要么不要了

ghimi 发表于 2021-4-28 21:59

class FtpController:
    def __init__(self, host, username, password):
      ftp_server = ftplib.FTP(host)
      ftp_server.encoding = "utf-8"
      ftp_server.login(username, password)
      self.ftp = ftp_server

    def del_all_file(self, ftp_path):
      self.ftp.cwd(ftp_path)
      files = self.ftp.mlsd()
      # 清空当前目录
      for file in files:
            if file['type'] == 'dir':
                self.del_all_file(file)
            if file['type'] == 'file':
                self.ftp.delete(file)
      # 删除当前目录
      self.ftp.rmd(".")
      # 退回到上级目录
      self.ftp.cwd("..")


if __name__ == '__main__':
    print_hi('PyCharm')
    ftp = FtpController("localhost", "admin", "admin")
    ftp.del_all_file("/com/example")

-BGZ- 发表于 2021-4-28 22:03

最近想学一下python,没找到适合小白的。

萌新与小白 发表于 2021-4-28 22:22

ftp没删过,删过本地的,https://blog.csdn.net/fj_changing/article/details/108418504

fanvalen 发表于 2021-4-28 22:31

-BGZ- 发表于 2021-4-28 22:03
最近想学一下python,没找到适合小白的。

b站 搜python 一大堆 看个几十小时就入门了
页: [1] 2
查看完整版本: 求助,Python递归删除FTP文件夹以及文件的方法