吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2372|回复: 9
收起左侧

[Python 原创] 批量替换文件名中的广告词和删除指定后缀文件

[复制链接]
愚者—我 发表于 2022-12-14 20:43
第一次发技术贴;
主要是最近学习一些资源, 从一些网站上找的资源, 发现文件名中有大量的广告词, 还有大量的广告文件, 看上去贼难受, 就写了个代码去删除了。
时间有限, 应该不是最优的解法,只不过用到了递归,所以和老哥们分享一下啊



删除文件的代码

[Python] 纯文本查看 复制代码
"""
-- -*-   coding: utf-8   -*-
-- @Description:   批量删除指定尾缀的文件
-- @Date:          2022/12/14 20:02
-- @Author:        FlyPig
-- @FileName:      demo02_batch_remove.py
"""
import os


def batch_remove(file_ends: str, file_path: str, is_recursion: bool = False) -> None:
    """
    批量删除文件
    :param file_ends: 文件的尾缀
    :param file_path: 文件夹路径
    :param is_recursion: 是否进行递归删除
    :return: 没有返回值
    """

    sub_files = list()

    # 获取该目录下所有的子目录, 列表中存储文件的绝对路径
    if os.path.isdir(file_path):
        sub_files = [os.path.join(file_path, i) for i in os.listdir(file_path)]

    # print(*sub_files)

    # 遍历该目录, 判断是否有目标尾缀的文件,有进行删除
    if sub_files:
        for sub_file in sub_files:
            if os.path.isfile(sub_file) & sub_file.endswith(file_ends):
                print(f'删除的文件为:{sub_file}')
                os.remove(sub_file)
            elif is_recursion & os.path.isdir(sub_file):
                # 表示该路径是一个目录, 进行递归调用
                batch_remove(file_ends, sub_file, True)


if __name__ == '__main__':
    # 要删除的文件的后缀
    target_ends = ''
    # 要删除的目录的路径
    path = r""
    # path = r"D:/learn file/big data/other/test/"

    batch_remove(target_ends, path, is_recursion=False)



修改名称的代码
[Python] 纯文本查看 复制代码
"""
-- -*-   coding: utf-8   -*-
-- @Description:   批量修改文件名中的一些水印
-- @Date:          2022/12/14 20:29
-- @Author:        FlyPig
-- @FileName:      demo03_update_filename.py
"""
import os.path


def update_filename(file_path: str, tar_str: str, is_recursion: bool = False) -> None:
    """
    修改文件及目录名
    :param file_path: 修改的文件夹路径
    :param tar_str: 要删除的文件名中的字符
    :param is_recursion: 是否递归
    :return: 没有返回值
    """

    sub_files = list()

    if os.path.isdir(file_path):
        # 修改目录名
        tmp = '\\'.join(file_path.split("\\")[0:-1])
        new_file_name = os.path.join(tmp, file_path.split("\\")[-1].replace(tar_str, ''))
        os.rename(file_path, new_file_name)
        print(f"原名称{file_path} ---> 改为{new_file_name}")
        sub_files = [os.path.join(file_path, i) for i in os.listdir(new_file_name)]

    # print(*sub_files)
    # 该目录不为空,进行修改
    if sub_files:
        for sub_file in sub_files:

            if os.path.isfile(sub_file) and tar_str in sub_file:
                # 删除文件名中的指定字符
                tmp = '\\'.join(sub_file.split("\\")[0:-1])
                new_file_name = os.path.join(tmp, sub_file.split("\\")[-1].replace(tar_str, ''))
                print(f"原名称{sub_file} ---> 改为{new_file_name}")

                os.rename(sub_file, new_file_name)
            elif os.path.isdir(sub_file) and is_recursion:
                # 进行递归调用
                update_filename(sub_file, tar_str, is_recursion)


if __name__ == '__main__':
    # 要修改的目录
    file = r""
    # 要删除的文件名中的广告词
    tar = ""
    update_filename(file, tar, True)

免费评分

参与人数 2吾爱币 +4 热心值 +2 收起 理由
wushaominkk + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wanfon + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wuai4444 发表于 2022-12-14 21:22

谢谢楼主分享。
umbrella_red 发表于 2022-12-14 22:14
haidemili 发表于 2022-12-14 22:29
tjmengzi 发表于 2022-12-14 23:18
感谢分享 不错
h512h 发表于 2022-12-15 07:43
…谢谢楼主分享
莲绮梦 发表于 2022-12-15 09:25
谢谢分享 不错 收藏了 下次就试试
huaxincanmeng 发表于 2022-12-17 09:06
感谢分享,赞一个
落花萧然 发表于 2022-12-23 13:49
谢谢分享 不错 收藏了
Dreamfly0416 发表于 2022-12-23 14:43
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-1 02:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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