吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1735|回复: 14
收起左侧

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

[复制链接]
旧城旧人 发表于 2021-4-28 19:03
百度找了几个都不能用,自己写了一段也有点问题

[Python] 纯文本查看 复制代码
    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
fanvalen 发表于 2021-4-28 21:47
fanvalen 发表于 2021-4-28 21:49
[Python] 纯文本查看 复制代码
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
[mw_shl_code=python,true]from ftplib import FTP
ftp=FTP()
ftp.encoding='utf-8'

当然你要显示删除什么文件就自行遍历了
不过也没什么卵用删除了要么恢复数据
要么不要了
ghimi 发表于 2021-4-28 21:59
[Python] 纯文本查看 复制代码
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[1]['type'] == 'dir':
                self.del_all_file(file[0])
            if file[1]['type'] == 'file':
                self.ftp.delete(file[0])
        # 删除当前目录
        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 一大堆 看个几十小时就入门了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 02:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表